Redis深度历险-Redis懒惰删除

本文大部分内容引自《Redis深度历险:核心原理和应用实践》,感谢作者!!!

Redis是不是单线程的

Redis内部实际上不只有一个主线程,还有几个异步线程专门用来处理耗时操作

Redis懒惰删除key的原因

1、普通的del指令会直接释放对象内存且非常迅速,但是如果删除的是一个非常大的对象,就会导致单线程卡顿

2、Redis4.0之后引入了unlink指令,能对删除操作进行懒处理,丢给后台线程来异步回收内存;当unlink指令发出时,相当于把大树中的一个树枝别断了,然后扔到旁边的火堆里焚烧(异步线程池);树枝离开大树的一瞬间就再也无法被主线程中的指令访问到了,因为主线程只会沿着这颗大树来访问

> unlink key
OK

flush

Redis提供了flush和flushall指令用来清空数据库,这也是极其缓慢的操作。Redis4.0同样给这两个指令带来了异步化,在指令后增加async参数就可以将整棵大树连根拔起,扔给后台线程慢慢焚烧

> flushall async
OK

异步指令实现的原理-异步队列

1、主线程将对象的引用从“大树”中摘除后会将这个key的内存回收操作包装成一个任务塞进异步任务队列,后台线程会从这个异步队列中取任务;异步任务被主线程和异步线程同时操作,所以必须是一个线程安全的队列

2、不是所有的unlink都会延后处理,如果对应key所占用的内存很小,Redis会将对应的key内存立即回收,不会进行延后处理

AOF Sync很慢

Redis需要每秒同步一次AOF日志到磁盘来确保信息尽量不丢失,调用fsync函数将指定文件内容强制从内核缓存写入到磁盘中去;这个操作很耗时,所以Redis也将这个操作移到异步线程来完成;执行AOF Sync操作的线程是一个独立的异步线程,和前面的懒惰删除线程不是一个线程,同样它也有一个属于自己的任务队列,队列中只用来存放AOF Sync任务

更多异步删除点

Redis回收内存除了del和flush指令,还会存在于key的过期、LRU淘汰、rename指令以及从库全量同步时接收完rdb文件后悔立即进行的flush操作

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis是一款内存数据库,性能高、支持多种数据结构、提供丰富的功能,得到了广泛的应用。但其维护操作却需要一定的技巧,开源社区中也有大量的文档、文章来讲解。其中,Redis深度历险一书介绍了Redis的基础知识、高级特性、应用场景和实战案例。该书深入剖析了Redis内部的实现原理,让读者更好地理解其运行机制、调优方法和错误排查。主要内容包括Redis线程模型、内存优化、IO模型、事务、持久化、集群、性能调优、应用场景等。其中,集群方面包括Redis Cluster和Redis Sentinel两类架构的详细介绍和使用方法。性能调优方面,介绍了一些常见的性能问题和解决方案,以及使用Redis的最佳实践。对于有一定Redis使用经验的开发人员或系统工程师,这本书可以帮助他们更好地优化和管理Redis实例,也可以让他们更深入地掌握Redis相关知识。对于想学习Redis的初学者,建议还需要通过其他资料了解Redis基本概念和用法。总的来说,Redis深度历险是一本值得阅读的Redis专业书籍,它为读者提供了许多经验和实践经验,也为企业中使用Redis的团队提供了宝贵的参考资料。 ### 回答2: Redis是一款开源的高性能NoSQL数据库,近年来在企业级应用中广受欢迎。《Redis深度历险》是一本深入介绍Redis的技术书籍,由黄健宏等人撰写。 这本书详细介绍了Redis的架构、原理、数据结构、使用场景、性能优化、集群部署等方面的知识,通过系统化的学习可以在Redis的使用和优化方面获得很大的收获。 《Redis深度历险》中包含大量的实际代码示例和生产环境中的案例分析,可以帮助读者深入理解Redis的实现细节和应用场景,并快速应用到自己的实战项目中。同时,这本书也适合那些想深入了解分布式系统的架构师、程序员、运维工程师等 IT 技术人员。 此外,书中还介绍了很多Redis的新特性和应用场景,如Redis的流式计算、Redis与gRPC的结合使用等,让人们对Redis的使用和应用场景有了更深刻的认识。 总之,《Redis深度历险》是一本非常实用的Redis技术指南,对于想深入学习Redis的技术人员来说是非常必备的一本读物。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值