- 博客(4)
- 收藏
- 关注
原创 Redis缓存问题
如何保证缓存的双写一致性?缓存的双写一致性很难保证强一致,只能尽可能降低不一致的概率,确保最终一致。我们项目中采用的是模式。简单来说,就是在更新数据库之后删除缓存;在查询时先查询缓存,如果未命中则查询数据库并写入缓存。同时我们会给缓存设置过期时间作为兜底方案,如果真的出现了不一致的情况,也可以通过缓存过期来保证最终一致。为什么不采用延迟双删机制?延迟双删的第一次删除并没有实际意义,第二次采用延迟删除主要是解决数据库主从同步的延迟问题,我认为这是数据库主从的一致性问题,与缓存同步无关。
2024-08-23 13:44:35 1617
原创 Redis内存回收
Redis如何判断KEY是否过期呢?在Redis中会有两个Dict,也就是HashTable,其中一个记录KEY-VALUE键值对,另一个记录KEY和过期时间。要判断一个KEY是否过期,只需要到记录过期时间的Dict中根据KEY查询即可。Redis何时删除过期KEY?如何删除?Redis的过期KEY处理有两种策略,分别是惰性删除和周期删除。惰性删除是指在每次用户访问某个KEY时,判断KEY的过期时间:如果过期则删除;如果未过期则忽略。周期删除SLOW。
2024-08-22 15:59:50 1883
原创 Redis-SortedSet(zset)
还有一些高级数据类型,比如Bitmap、HyperLogLog、GEO等,其底层都是基于上述5种基本数据类型。因此在Redis的源码中,其实只有5种数据类型。
2024-08-22 13:49:59 648
原创 Redis主从、哨兵、集群
Sentinel的三个作用是什么?集群监控故障恢复状态通知Sentinel如何判断一个redis实例是否健康?每隔1秒发送一次ping命令,如果超过一定时间没有相向则认为是主观下线(sdown如果大多数sentinel都认为实例主观下线,则判定服务客观下线(odown故障转移步骤有哪些?首先要在sentinel中选出一个leader,由leader执行failover选定一个slave作为新的master,执行,切换到master模式然后让所有节点都执行slaveof新master。
2024-08-21 21:56:25 1615
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人