Redis
什么是Redis
- 数据从内存中读写
- 数据保存到硬盘上防止重启数据丢失
- 增量数据保存到AOF文件
- 全量数据RDB文件
- 单线程处理所有操作命令
应用案例与Redis的数据结构
- String
数据结构:sds
- 可以存储字符串,数字,二进制数据
- 通常和expire配合使用
- 场景存储计数,Session
- Quicklist
List数据结构Quicklist由双向链表和listpack实现
- Listpack
- Hash
Hash数据结构dict
- rehash:将ht[0]中的数据,全部迁移到ht[1]中。数据量小的场景下,直接将数据从ht[0]拷贝到ht[1]速度是较快的。数据量大的场景下,例如存有上百万的KV时,迁移过程会明显阻塞用户请求
- 渐进式rehash:为避免这种情况,使用rehash方案。基本原理就是,每次用户访问时都会迁移少量的数据。将整个迁移过程,平摊到所有访问用户请求过程中
- zskiplist
zset数据结构zskiplist