Redis 学习进阶版
Redis 学习进阶版
雪崩,穿透,击穿
名字 | 缓存雪崩 | 缓存穿透 | 缓存击穿 |
---|---|---|---|
原因 | 大面试缓存失效 | 缓存和数据库都没数据 | 缓存没数据,数据库有数据 |
解决办法 | 每个key失效时间加上随机值 | 1.参数校验 2.Key对应value=null | 1.永久缓存 2.分布式锁来解决 |
Redis来实现分布式锁
保证分布式锁要以下原则:
1.互斥性。在任意时刻,只有一个客户端持有锁。
2.不发生死锁。持有锁崩溃而未完成解锁,后续客户能加锁。
3. 容错性。Redis节点正常运行,客户端就可以加锁解锁。
4. 解铃还须系铃人。加锁和解锁必须是同一客户端。
Redis持久化
类型 | RDB 持久化 | AOF持久化 |
---|---|---|
方式 | 指定时间间隔内将内存中数据集体快照写入磁盘 | 以日志形式记录服务器所有操作,以文本记录 |
- | Redis Sever—子进程–>RDB临时文件 | Redis Clinet—发送命令->Redis Server–同步命令->AOF记录文件 |
优点 | 1. 灾难性故障,非常容易恢复 2. 单独文件轻易转移其他存储介质 3. 性能最大化,避免进程IO操作 4. 如果数据集大,RDB启动效率高 | 1.更加高的数据安全性 . 2.写入过程中宕机,数据一致性 3. 日志过大,宕机启用rewirter保证数据安全 4. 易于理解 |
Redis 失效策略(二者结合)
- 定时删除
对内存友好,CPU不友好 - 惰性删除
发现key值过期了,就删除key
Redis 集群 高可用
主从服务器(主从服务器,数据一致)
主服务器负责写请求, 从服务器负责接收读请求