Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis 删除策略

Redis 删除策略的三种实现

作者:Doker 多克

本文主要介绍了Redis 删除策略的三种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Redis中的数据删除策略包括定:时删除、惰性删除、定期删除

一、Redis过期时间设置

Redis提供了四个命令来设置过期时间(生存时间)。

二、定时删除

三、惰性删除 (空间换时间)

数据到达过期时间,先不做处理。等下次访问该数据时,发现数据已过期,删除,给客户端返回不存在。

四、 定期删除(中和以上两种方案)

由redis.c/activeExpireCycle 函数实现,函数以一定的频率运行,每次运行时,都从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键。

注意:并不是一次运行就检查所有的库,所有的键,而是随机检查一定数量的键。

定期删除函数的运行频率,在Redis2.6版本中,规定每秒运行10次,大概100ms运行一次。在Redis2.8版本后,可以通过修改配置文件redis.conf 的 hz 选项来调整这个次数。

五、三种删除方案对比

内存占用

CPU占用特征

定时删除

节约内存,无占用

不分时段占用CPU资源,频度高

时间换空间
惰性删除

内存占用严重

延时执行,CPU利用率高

空间换时间

定期删除

内存定期随机清理

每秒花费固定的CPU资源维护内存

随机抽查,重点抽查

六、逐出算法

Redis密钥驱逐策略概述(LRU、LFU等)
当Redis被用作缓存时,在添加新数据时,让它自动收回旧数据通常很方便。这种行为在开发人员社区中是众所周知的,因为它是流行的memcached系统的默认行为。
本页介绍了Redis maxmemory指令的更一般的主题,该指令用于将内存使用限制在固定数量。它还广泛涵盖了Redis使用的LRU驱逐算法,该算法实际上是精确LRU的近似值。

1、MaxMemory配置指令

maxmemory配置指令将Redis配置为对数据集使用指定数量的内存。您可以使用redis.conf文件设置配置指令,或者稍后在运行时使用CONFIG set命令设置配置指令。
例如,要配置100兆字节的内存限制,可以在redis.conf文件中使用以下指令:

maxmemory 100mb

将maxmemory设置为零将导致无内存限制。这是64位系统的默认行为,而32位系统使用3GB的隐式内存限制。
当达到指定的内存量时,驱逐策略的配置方式决定了默认行为。Redis可以为可能导致使用更多内存的命令返回错误,也可以在每次添加新数据时收回一些旧数据以返回到指定的限制。

2、驱逐政策

当达到最大内存限制时,Redis遵循的确切行为是使用maxmemory策略配置指令配置的。
以下策略可用:

到此这篇关于Redis 删除策略的三种实现的文章就介绍到这了,更多相关Redis 删除策略内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文