Redis学习

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems. Redis是现在很火的高性能KV内存数据库,支持丰富的数据类型,支持持久化、数据同步等DB特性。Redis是开源的,代码量不大2W+,代码风格和实现都很值得学习。在开源的时代,模仿好代码估计是最快的学习方式。

使用

推荐如下资料:

Redis系统性介绍

一个很棒的Redis介绍PPT

Redis官方文档

实现

推荐如下资料:

Redis内存存储结构分析

Redis RDB文件格式全解析,英文:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format

协议规范(Protocol specification)

Redis: under the hood

解密Redis持久化

Replication

Redis官方文档

可复用代码(版本2.6.3)

malloc封装():tcmalloc|jemalloc|libc 使用最佳的malloc封装,libc的malloc不提供获取分配内存大小的接口。

zmalloc.h, zmalloc.c

异步网络库:封装各种事件组件,提供统一的接口。

ae.c  ae_epoll.c  ae_evport.c  ae.h  ae_kqueue.c  ae_select.c

TCP|UNIX网络封装: 很简单的封装。

anet.h, anet.c, syncio.c(阻塞式读写)

数据结构

adlist.h, adlist.c (通用双向链表), ziplist.h, ziplist.c, zipmap.h, zipmap.c,  intset.h, intset.c(基于连续内存的小数据存储结构), sds.h, sds.c(Binary Safe字符串)

lzf压缩算法

lzf -- an extremely fast/free compression/decompression-method: http://liblzf.plan9.de/

lzf_c.c  lzf_d.c  lzf.h  lzfP.h  

文件读写: 封装基于文件和内存的数据读写。

rio.h, rio.c 

工具

crc64.c,  endianconv.h, endianconv.c(将大端数据转成小端,性能考虑), memtest.c(内存测试工具), pqsort.h, pqsort.c(部分快排), rand.h, rand.c, sha1.c, sha1.h(开源的sha), util.c, util.h(字符串匹配,字符串和整形数转换)

设计

灵活协议

Redis采用可读可组合的文本协议。Redis采用统一的命令格式,基于统一的规范命令Redis天生具备解析和执行多条命令的能力,因此Redis非常容易支持:批量命令、事务、原子操作(脚本原子操作)等。

权衡

Redis的设计需要做各种权衡,每一种权衡都意味着不同的实现方案、资源、性能的折中。Redis不可能适合所有的使用场景,作为KV的内存数据库,Redis做了很多针对性设计:高性能优先、高内存使用效率、多样的数据结构(内存易实现)、单线程读写(CPU非瓶颈)、数据快照(RDB文件)、可过期的数据,同时提供其他可配置的功能:AOF(日志)、可配置的小数据格式、主从Replication、严格内存限制或swap、LRU缓存、磁盘存储等。

小技巧

Redis Administration

FAQ

memory-optimization

其他资料

Redis资料汇总专题

 


本文转自 zhenjing 博客园博客,原文链接:http://www.cnblogs.com/zhenjing/archive/2012/11/15/redis_research.html   ,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5月前
|
存储 NoSQL Linux
小白带你学习linux的Redis基础(三十二)
小白带你学习linux的Redis基础(三十二)
76 0
|
4月前
|
存储 NoSQL Redis
redis源码学习
redis源码学习
|
5月前
|
存储 NoSQL Ubuntu
在Ubuntu上安装Redis并学习使用get、set和keys命令
在Ubuntu上安装Redis并学习使用get、set和keys命令
|
6月前
|
缓存 NoSQL Redis
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
【Redis 系列】redis 学习十六,redis 字典(map) 及其核心编码结构
|
6月前
|
NoSQL 算法 Redis
【Redis 系列】redis 学习十四,sorted_set 初步探究梳理
【Redis 系列】redis 学习十四,sorted_set 初步探究梳理
|
6月前
|
存储 NoSQL Redis
【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
【Redis 系列】redis 学习十五,redis sds数据结构和底层设计原理
|
6月前
|
负载均衡 NoSQL Redis
【Redis 系列】redis 学习十,Redis 集群搭建和主从复制
【Redis 系列】redis 学习十,Redis 集群搭建和主从复制
|
4月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
86 2
|
4月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
75 0
|
6月前
|
存储 NoSQL 算法
[Redis 系列]redis 学习 17,redis 存储结构原理 1
[Redis 系列]redis 学习 17,redis 存储结构原理 1