Redis - 扩展 - 懒惰删除

Redis在4.0版本中引入了多种异步处理机制,包括懒惰删除、异步flush、AOFSync等功能,用于提高单线程环境下处理高负载的能力。通过后台线程处理耗时操作,如key的内存回收、AOF日志同步等,避免主线程阻塞,提升整体性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis内部并不是只有一个主线程,他还有几个异步线程专门用来处理一些耗时的操作。

1、Redis使用懒惰删除

删除指令del会直接释放对象的内存,如果删除的key是一个非常的对象,那么删除操作旧会导致单线程卡顿,为了解决卡顿的问题,Redis在4.0中引入unlink指令,对删除指令懒处理,让后台线程来处理。

2、flush

Redis提供了flushdb和flushall指令,来清空数据库,Redis4.0同样给这俩个指令带来了异步处理,只要在指令的后面增加async参数

3、异步队列

    主线程将对象的引用摘除后,会将这个key的内存回收操作包装成一个任务,放入异步任务队列,后台线程从这个异步队列中取任务,不是所有的unlink操作都会延后处理,如果对应的key所占用的内存很小,Redis会将对应的key内存立刻回收,和del指令一样。

4、AOF Sync

Redis需要定时同步AOF日志到磁盘,确保消息尽量不丢失,需要调用sync函数,执行AOF Sync的操作线程也是一个独立的异步线程,他有一个属于自己的任务队列,队列中只存放AOF Sync的任务。

5、其他一些异步操作

Redis4.0通过配置选项,可以对下面的操作进行异步操作。

1)slave-lazy-flush 从库接受完 rdb 文件后的 flush 操作

2)lazyfree-lazy-eviction 内存达到 maxmemory 时进行淘汰

3)lazyfree-lazy-expire key 过期删除

4)lazyfree-lazy-server-del  rename 指令删除 destKey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值