1.1 Redis 简介
Redis的主要版本如下。
1)2009年5月发布Redis初始版本。
2)2012年发布Redis 2.6.0。
3)2013年11月发布Redis 2.8.0。
4)2015年4月发布Redis 3.0.0,该版本引入了集群。
5)2017年7月发布Redis 4.0.0,该版本引入了模块系统。
6)2018年10月发布Redis 5.0.0,该版本引入了Streams结构。
Redis在互联网数据存储方面应用广泛,主要具有以下优点。
1)Redis是内存型的数据库,也就是说Redis中的key-value对是存储在内存中的,因而效率比磁盘型的快。
2)Redis的工作模式为单线程,不需要线程间的同步操作。Redis采用单线程主要因为其瓶颈在内存和带宽上,而不是CPU。
3)Redis中key-value的value不仅可以是字符串,也可以是复杂的数据类型,如链表、集合、散列表等。
4)Redis支持数据持久化,可以采用RDB、AOF、RDB&AOF三种方案。计算机重启后可以在磁盘中进行数据恢复。
5)Redis支持主从结构,可以利用从实例进行数据备份。
1.2 Redis 5.0的新特性
1)新增Streams数据类型,这是Redis 5.0最重要的改进之一。可以把Streams当作消息队列,详细内容参见后续章节。
2)新的模块API、定时器、集群及字典。
3)RDB中持久化存储LFU和LRU的信息。
4)将集群管理功能完全用C语言集成到redis-cli中,Redis 3.x和Redis 4.x的集群管理是通过Ruby脚本实现的。
5)有序集合新增命令ZPOPMIN/ZPOPMAX。
6)改进HyperLogLog的实现。
7)新增Client Unblock和Client ID。
8)新增LOLWUT命令。
9)Redis主从复制中的从不再称为Slave,改称Replicas。
10)Redis 5.0引入动态哈希,以平衡CPU的使用率和相应性能,可以通过配置文件进行配置。Redis 5.0默认使用动态哈希。
11)Redis核心代码进行了部分重构和优化。
1.3 Redis源码概述
Redis源代码的核心部分主要如下。
(1)基本的数据结构
·动态字符串sds.c
·整数集合intset.c
·压缩列表ziplist.c
·快速链表quicklist.c
·字典dict.c
·Streams的底层实现结构listpack.c和rax.c
(2)Redis数据类型的底层实现
·Redis对象object.c
·字符串t_string.c
·列表t_list.c
·字典t_hash.c
·集合及有序集合t_set.c和t_zset.c
·数据流t_stream.c
(3)Redis数据库的实现
·数据库的底层实现db.c
·持久化rdb.c和aof.c
(4)Redis服务端和客户端实现
·事件驱动ae.c和ae_epoll.c
·网络连接anet.c和networking.c
·服务端程序server.c
·客户端程序redis-cli.c
(5)其他
·主从复制replication.c
·哨兵sentinel.c
·集群cluster.c
·其他数据结构,如hyperloglog.c、geo.c等
·其他功能,如pub/sub、Lua脚本
1.4 Redis安装与调试
省略.
1.5 本章小结
省略.