首页 > 编程语言 > 详细

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

时间:2019-09-16 10:41:14      阅读:127      评论:0      收藏:0      [点我收藏+]

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

懒惰删除

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

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

异步清空数据库

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

AOF刷磁盘

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

其他异步操作

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

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

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

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

原文:https://www.cnblogs.com/shizhuoping/p/11525900.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!