基于内存:快
基于键值对K,V
单线程worker
连接很多:epoll
V:五种类型、应用场景
本地方法:计算向数据移动,IO优化
串行化、原子:并行VS串行
I/O模型
redis和memcache的区别及优缺点
数据结构及使用场景
- Binary String - 二进制安全的字符串
- 普通缓存
- 计数器
- 分布式锁
- List - 以插入顺序为序的string元素集合。本质是链表
- topK问题
- 消息队列
- Set - 无序、不重复的string元素集合
- 自动排重的列表,列表可以做取交集,并集,差集的操作。例如微博好友,共同好友等。
- Sorted Set - 数据结构和Set类似,增加了一个Score字段用来排序。支持TopK的查询。
- 带权重的set,可以做优先级队列
- Hashes - map数据结构。
- 当需要缓存的value是一个对象时,使用Hashes而不使用序列化后的字符串可以减少序列化的开销。同时hashes支持部分属性修改
- BitArray - 简单的位图,利用数组的下标查找特性,使用一个0/1的比特位来标记结果,大大的节省了内存。
- 布隆过滤器
HyperLogLogs - 一种用来统计唯一元素出现次数的数据结构。rdb - 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
aof - 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
redis内存优化
内存压缩
-
分布式锁专题
setnx实现简单的单机分布式锁。
- 解锁失败问题(锁增加过期时间)
- 线程A阻塞锁自动过期,锁被线程B持有,A恢复后释放线程B的锁问题。(延迟删除缓存)
-
缓存数据库数据一致性问题
redis支持事务且能集成Spring,使用事务可以保证
使用cache-aside-pattern模式使用缓存,cache-aside-pattern存在的问题好好看一下
缓存四大问题及解决方案(本质是避免大量请求回源数据库)
缓存穿透
- 缓存击穿
- 缓存雪崩
-
redis集群使用
集群与单机使用命令上不同的地方
-
扩展-加分项
多级缓存
