懒惰删除和redis中的特殊线程

懒惰删除和redis中的特殊线程

懒惰删除

删除key的指令是del,如果key非常大,这个指令就会卡顿,此时可以用unlink,它会将删除丢给后台进程异步回收内存,在执行的一瞬间,其他客户端就无法访问到该key了。(如果key很小就会立刻删除)

删除任务会塞进异步任务队列(主线程操作这个队列时会有加锁和解锁操作,如果异步线程在休眠的话还会唤醒),后台线程会依次处理这些任务。

异步清空数据库

flushdb和flushall命令用来清空数据库,但是也很耗时,可以用async来代替异步删除。

AOF刷磁盘

在进行AOF时,将内存中的数据刷新到磁盘的sync函数也是很耗时的,会导致主线程效率下降,所以redis也会使用一个异步线程来操作这个过程,它也有一个属于自己的任务队列。

其他异步操作

还有很多的删除:淘汰时、过期时、rename时这些都可以通过配置来异步完成。

异步删除方案在最初设计时并没有考虑到,是后来才改造的,因为redis的对象共享机制,导致懒惰删除不干净,为了支持懒惰删除,redis将这种机制抛弃,改用了无共享设计。

其他异步操作:主从同步的增量同步

转载于:https://www.cnblogs.com/shizhuoping/p/11525900.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值