Redis5设计与源码分析 (第1章 引言)

1.1 Redis 简介

Redis的主要版本如下。

120095月发布Redis初始版本。

22012年发布Redis 2.6.0

3201311月发布Redis 2.8.0

420154月发布Redis 3.0.0,该版本引入了集群。

520177月发布Redis 4.0.0,该版本引入了模块系统。

6201810月发布Redis 5.0.0,该版本引入了Streams结构。

Redis在互联网数据存储方面应用广泛,主要具有以下优点。

1Redis是内存型的数据库,也就是说Redis中的key-value对是存储在内存中的,因而效率比磁盘型的快。

2Redis的工作模式为单线程,不需要线程间的同步操作。Redis采用单线程主要因为其瓶颈在内存和带宽上,而不是CPU

3Rediskey-valuevalue不仅可以是字符串,也可以是复杂的数据类型,如链表、集合、散列表等。

4Redis支持数据持久化,可以采用RDBAOFRDB&AOF三种方案。计算机重启后可以在磁盘中进行数据恢复。

5Redis支持主从结构,可以利用从实例进行数据备份。

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.crax.c

2Redis数据类型的底层实现

·Redis对象object.c

·字符串t_string.c

·列表t_list.c

·字典t_hash.c

·集合及有序集合t_set.ct_zset.c

·数据流t_stream.c

3Redis数据库的实现

·数据库的底层实现db.c

·持久化rdb.caof.c

4Redis服务端和客户端实现

·事件驱动ae.cae_epoll.c

·网络连接anet.cnetworking.c

·服务端程序server.c

·客户端程序redis-cli.c

5)其他

·主从复制replication.c

·哨兵sentinel.c

·集群cluster.c

·其他数据结构,如hyperloglog.cgeo.c

·其他功能,如pub/subLua脚本

1.4 Redis安装与调试

省略.

1.5 本章小结

省略.

原文地址:https://www.cnblogs.com/coloz/p/13812818.html