![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
文章平均质量分 93
Redis 学习记录
尖笔尖
超人不会飞
展开
-
redis惰性删除 lazy free 源码剖析,干货满满
redis 是用 c 语言实现的,而我们知道 c 语言是没有垃圾回收的,也就说对于程序申请的内存是需要程序来释放的,因此,在 redis 中删除数据包含两个步骤:步骤一:将待删除数据对从字典表中删除;步骤二:释放待删除数据所占用的内存空间。如果这两个步骤同步执行,就叫同步删除;而如果只执行步骤一,将来通过后台线程来执行步骤二,就叫异步删除。而惰性删除里的惰性其实指的就是删除时只执行步骤一,而将步骤二 "延迟" 到后台线程执行。原创 2022-11-10 22:01:30 · 3284 阅读 · 2 评论 -
Redis 主从同步
单点部署的服务无论服务本身设计的多完美,只要服务所在的机器宕掉了,都是白扯。在要求高可用性的系统设计上,都会遵守一个核心准则:冗余。也就是说某个节点挂掉后,还有其他节点可以继续提供服务。对 存储系统 设计冗余要考虑如何保证 数据的一致性(所有节点的数据要一致)。...原创 2022-08-18 20:37:43 · 5862 阅读 · 0 评论 -
Redis RDB 和 AOF 持久化
前言Redis 是内存数据库,一旦 Redis 进程因为某种原因发生退出,内存中的数据就会全部丢失,即使只是把 Redis 当做缓存使用,在高并发的情况下也可能引起 缓存雪崩,导致整个系统不可用。为了解决这个问题,Redis 提供了两种持久化方式: RDB(Redis DataBase) 和 AOF(Append Only File),它们可以将内存中的数据保存到磁盘,在 Redis 进程异常退出重启后,可以从磁盘里把数据重新读回到内存。RDB 持久化RDB 持久化是将内存在某一时刻的数据集原创 2022-03-17 23:17:29 · 1260 阅读 · 0 评论 -
Redis 缓存淘汰策略以及 LRU、LFU 算法
Redis 使用内存来保存数据,而物理内存是有限的,如果不对 Redis 使用内存做出限制,当内存不够用时,操作系统将通过 swap 分区让数据在内存和硬盘之间来回置换,这会严重影响 Redis 性能,因此我们一般要配置 Redis 可以使用的最大内存(maxmemory)。原创 2022-03-13 22:08:43 · 5651 阅读 · 4 评论 -
Redis 缓存 雪崩、击穿、穿透
缓存雪崩大量 key 的查询本应该在缓存层返回,由于缓存失效,这些查询都要去请求数据库,导致数据库过载。造成缓存雪崩的原因一般有以下两点 :大量 key 同时过期 Redis 缓存实例宕机,导致缓存完全失效大量 key 同时过期 一般源自于大量 key 在同一时间设置了相同的过期时间。如果存在同一时间需要设置大量 key 的情况, 最简单实用的方案是 给过期时间加个较小的随机值,这样就可以避免大量 key 同时过期的产生,同时还可以保证 key 的有效期和预期设定值不会偏离很远。而如原创 2022-03-06 22:50:50 · 550 阅读 · 0 评论 -
Redis 缓存和数据库一致性讨论
缓存模型根据 缓存是否接收写请求 可以将缓存分为 只读缓存 和 读写缓存。只读缓存所有的 读请求直接发到缓存,缓存中不存在再去数据库查询数据并加载到缓冲中。所有的 写请求直接发送到后端数据库,针对删除和修改,数据可能存在于缓存中,因此还需要 删除缓存中的数据。因为写请求是直接发送到后端数据库的,因此 数据的最新状态存在于数据库中,不会发生数据的丢失。读写缓存读请求和写请求都发送到缓存,即直接在缓存中进行增删改查。直接操作缓存可以极大地提升系统的响应性能,当然,因为数据的最新状态位原创 2022-03-03 22:50:28 · 372 阅读 · 0 评论