数据结构
- String
- List
- Hsah
- Set
- Zset
分布式锁
实现:设置值加过期时间->set原子命令
注意:无法解决处理超时问题,需人工解决
稍微改进:删除时判断是否是当前线程的设的值再删除->lua原子命令
注意:redis分布式锁实现需要包装set命令,比较复杂,不建议使用
冲突处理
- 异常
- sleep
- 延时队列
延时队列
使用Zset实现
异步队列
使用List实现
注意:消费者要合理使用sleep或使用阻塞度(要超时处理)
过期策略
- 被访问时判断是否过期
- 定时删除+循环随机抽取
内存溢出策略
- 只读
- 可过期&最少使用->淘汰
- 可过期&最快过期->淘汰
- 可过期&随机->淘汰
- 最少使用->淘汰
- 随机->淘汰
LRU
- 字典+双向链表 实现
- 时间戳+随机采样+淘汰池 淘汰其中时间戳最小的
懒惰删除
- 指令删除
- 同步rdb后异步清空
- 内存溢出时淘汰
- 过期删除
- unlink删除
- 异步清空
异步刷盘