- 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设置不同的过期时间,热数据缓存时间长一些,冷数据缓存时间短一些,尽量分散缓存过期时间
- 加锁或者队列来控制读数据库写缓存的线程数量
03-06 16:02