redis和CPU的关系,redis和guava( 二 )


Redis是一个单线程程序 , 意味着它只会使用一个CPU,但它可以通过使用多个实例来利用多个CPU 。例如,可以通过在一个服务器上运行多个Redis实例来利用多个CPU 。
充分使用多核cpu的能力,那么需要在单台服务器上运行多个redis实例(主从部署/集群化部署),并将每个redis实例和cpu内核进行绑定 。
Redis多线程只用来处理网络数据的读写和协议解析,命令的执行仍旧是单线程 。这样的设计改变是为了不想让Redis因为引入多线程变得复杂 。
redis惰性删除会增加cpu压力除了定期遍历之外,它还会使用惰性策略来删除过期的 key,所谓惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西 。
从库不会进行过期扫描 , 从库对过期的处理是被动的 。主库在 key 到期时,会在 AOF 文件里增加一条 del 指令,同步到所有的从库,从库通过执行这条 del 指令来删除过期的 key 。
redis 过期策略是:定期删除+惰性删除 。所谓定期删除 , 指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期 , 如果过期就删除 。
惰性删除 。也称被动删除,当数据过期后 , 并不会马上删除 。而是等到有请求访问时,对数据检查,如果数据过期,则删除数据 。优点:不需要单独启动额外的扫描线程,减少了CPU资源的损耗 。
定期删除会周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度,其特点为:a)CPU占用设置有峰值,检测频度可自定义设置 。
所以就是惰性删除了 。这就是说,在你获取某个 key 的时候,Redis 会检查一下,这个 key 如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西 。
关于redis和CPU的关系和redis和guava的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读