redis
目录
基础篇
redis命令
通用命令
String类型
key的层级结构
e.g.
douyin:user:1
douyin:user:2
douyin:product:1
Hash类型
List类型
List的操作类似于deque的操作
Set类型
SortedSet类型
实战篇
高级篇
分布式缓存
Redis持久化
RDB持久化
redis database backup
redis会对当前所存的数据(内存上)进行备份,备份到磁盘的rdb文件
AOF持久化
append only file
aof文件记录“写命令”,当数据丢失时,只要重新执行aof文件的记录的“写命令”就行
由于AOF记录的是命令,RDB记录的是数据,所以AOF文件比RDB文件大很多,有时候对一个key重复操作,可能是没有意义的,为了解决这个问题,可以用命令bgrewriteaof
优化命令,使多条命令合并成一条命令
Redis主从
redis的场景经常是多读写少,所以可以把写操作给主节点,把读操作给从节点(当然要保证主从数据的一致性)
主从同步
全量同步
增量同步
Redis哨兵
Redis分片集群
多级缓存
最佳实践
键值设计
key要有层级结构
不要有大key(单个key的value小于10KB,对于集合类型,元素个数小于1000)
- 如何发现bigkey
- 如何删除bigkey
使用合理的数据结构
批处理
原理篇
数据结构
简单动态字符串sds
IntSet
Dict
ZipList
QuickList
SkipList
RedisObject
五种数据类型
String
List
Set
ZSet
Hash
网络模型
用户空间和内核空间
阻塞IO
blocking io
非阻塞IO
nonblocking io
IO多路复用
io multiplexing
select
poll
epoll
信号驱动IO
signal driven io
异步IO
asynchronous io
缺点:用户不管内核忙不忙得过来,一直向内核发请求会让内核崩溃
Redis网络模型
通信协议
RESP协议
模拟Redis客户端
内存策略
过期策略
过期策略是惰性删除和周期删除相结合
淘汰策略
参考
黑马程序员