视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
redis怎么删数据
2020-11-09 06:58:29 责编:小采
文档


Redis常用的删除策略有以下三种:

1.被动删除(惰性删除):当读/写一个已经过期的Key时,会触发惰性删除策略,直接删除掉这个Key;

2.主动删除(定期删除):Redis会定期巡检,来清理过期Key;

3.当内存达到maxmemory配置时候,会触发Key的删除操作;

主动删除

在 Redis 中,常规操作由 redis.c/serverCron 实现,它主要执行以下操作:

1.更新服务器的各类统计信息,比如时间、内存占用、数据库占用情况等。

2.清理数据库中的过期键值对。

3.对不合理的数据库进行大小调整。

4.关闭和清理连接失效的客户端。

5.尝试进行 AOF 或 RDB 持久化操作。

6.如果服务器是主节点的话,对附属节点进行定期同步。

如果处于集群模式的话,对集群进行定期同步和连接测试。

Redis 将 serverCron 作为时间事件来运行,从而确保它每隔一段时间就会自动运行一次, 又因为 serverCron 需要在 Redis 服务器运行期间一直定期运行, 所以它是一个循环时间事件:serverCron 会一直定期执行,直到服务器关闭为止。

总结

如果Redis中每天过期大量Key(比如几千万),那么必须得考虑过期Key的清理:

增加Redis主动清理的频率(通过调大hz参数)

手动清理过期Key,最简单的方法是进行scan操作,scan操作会触发第一种被动删除,scan操作时候别忘了加count;

dbsize命令返回的Key数量,包含了过期Key

randomkey命令返回的Key,不包含过期Key

scan命令返回的Key,包含过期Key

info命令返回的# Keyspace

db6:keys=1034937352,expires=9947314,avg_ttl=507838502

keys对应的Key数量等同于dbsize

expires指的是设置了过期时间的Key数量

avg_ttl指设置了过期时间的Key的平均过期时间(单位:毫秒)

下载本文
显示全文
专题