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客户端
内存策略
过期策略


过期策略是惰性删除和周期删除相结合



淘汰策略



参考
黑马程序员