第1章 引言
1 Redis具有高性能的主要原因
- Redis是基于内存的存储数据库,大部分的命令都是内存操作
- Redis是单进程线程的服务(实际上一个正在运行的Redis Server肯定不止一个线程,但只有一个线程来处理网络请求)
- Redis使用多路I/O复用模型(select,poll,epoll),可以高效处理大量并发连接
- Redis的数据结构是专门设计,增,删,改,查等操作相对简单
2 Redis的主要优点
- Redis是内存型的数据库,Redis的key-value对是存储在内存中
- Redis的工作模式为单线程,不需要线程间的同步操作。Redis采用单线程主要因为其瓶颈在内存和带宽上,而不是CPU。
- Redis中key-value的value有多种数据类型,如字符串,链表,集合等
- Redis支持数据持久化,可以采用RDB,AOF,RDB&AOF三种方案在计算机重启时恢复数据
- Redis支持主从结构,可以利用从实例进行数据备份
3 Redis的源码主要文件
Redis源代码主要存放在src文件夹中,server.c为服务端程序,redis-cli.c为客户端程序。
Redis几个核心部分主要如下:
- 基本数据结构:动态字符串(sds.c);整数集合(intset.c);压缩列表(ziplist.c);快速链表(quicklist.c);字典(dict.c);Streams的底层实现结构(listpack.c和rax.c)
- Redis数据类型的底层实现:Redis对象(object.c);字符串(t_string.c);列表(t_list.c);字典(t_hash.c);集合及有序集合(t_set.c和t_zset.c);数据流(t_stream.c)
- Redis数据库的实现:数据库的底层实现(db.c);持久化(rdb.c和aof.c)
- Redis服务端和客户端实现:事件驱动(ae.c和ae_epoll.c);网络连接(anet.c和networking.c);服务端程序(server.c);客户端程序(redis-cli.c)
- 其他:主从复制(replication.c);哨兵(sentinel.c);集群(cluster.c);其他数据结构(如hyperloglog.c,geo.c等);pub/sub,Lua脚本
4 Redis中的可执行文件
- redis-benchmark:官方自带的Redis性能测试工具
- redis-check-aof和redis-check-rdb:当AOF文件或RDB文件出现语法错误时,可以用这两个进行修复
- redis-cli:客户端命令行工具,可以通过命令 redis-cli -h {host} -p {port} 连接到指定Redis服务器
- redis-sentinel:Redis哨兵启动程序
- redis-server:Redis服务端启动程序