Redis知识点
- Redis数据类型:String、List、Set、Sorted Set、Hash
- Redis淘汰策略
- 不淘汰数据
- 任意淘汰数据
- 最近最少使用的数据淘汰
- 从已设置过时时间的数据中任意淘汰
- 从已设置过时时间的数据中,淘汰最近最少使用的数据
- 从已设置过时时间的数据中,淘汰将要过时的数据
- 一个字符串类型的值能存储的最大容量?512M
- Redis集群方案
- Redis cluster模式(3.0自带集群)
主从节点,每一个节点管理一部分槽,一共分为16384个槽。插入数据时,根据CRC16(KEY) mod 16384的值,决定将key放入哪一个槽中。
- 哨兵模式
- codis模式
- 客户端本身分片
- Redis适合的场景
- 会话缓存
- 全页缓存
- 队列
- 排行榜/计数器
- 发布/订阅
- Redis集群之间是如何复制的?异步复制
- Redis集群最大的节点数是多少?16384
- Redis中管道用处?redis能够接收多个请求,而后依次返回全部结果
- Redis事务
- 单独隔离
- 全部命令序列化、按顺序执行
- 执行过程当中,不会被其余客户端发来的命令请求打断
- Redis事务相关的命令
- MULTI、EXEC、DISCARD、WATCH
- MULTI:标识事务开启
- EXEC:事务结束
- DISCARD:清除事务
- WATCH:监听事务
- Redis key过时时间设置:EXPIRE。永久有效:PERSIST
- Redis内存优化
- Redis分布式锁
- setnx key val:setnx争抢锁
- expire key timeout:争到锁后,设置超时时间
- delete key:删除key
- Redis异步队列
- list做为队列,lpush生产消息,rpop消费消息
- 当rpop没有消息时,适当sleep一会再重试
- 生产一次消费屡次:使用pub/sub订阅模式
- 缓存穿透
- 大量的恶意请求故意查询不存在的key,对数据库形成压力
- 避免
- 对查询结果为空的数据也进行缓存,缓存时间设置较短
- 对必定不存在的key进行过滤。
- 缓存雪崩
- 缓存服务器重启或者在某个时间段,缓存集中失效
- 避免
- 不一样的key设置不一样的过时时间,热数据缓存时间长一些,冷数据缓存时间短一些,尽可能分散缓存过时时间
- 加锁或者队列来控制读数据库写缓存的线程数量
欢迎关注本站公众号,获取更多信息