如果redis没有设置expire,他是否默认永不过期?
来源:互联网 发布:开源 数据库可视化工具 编辑:程序博客网 时间:2024/04/19 17:27
Redis无论有没有设置expire,他都会遵循redis的配置好的删除机制,在配置文件里设置:
redis最大内存不足”时,数据清除策略,默认为”volatile-lru”。
volatile-lru ->对”过期集合”中的数据采取LRU(近期最少使用)算法.如果对key使用”expire”指令指定了过期时间,那么此key将会被添加到”过期集合”中。将已经过期/LRU的数据优先移除.如果”过期集合”中全部移除仍不能满足内存需求,将OOM.
allkeys-lru ->对所有的数据,采用LRU算法
volatile-random ->对”过期集合”中的数据采取”随即选取”算法,并移除选中的K-V,直到”内存足够”为止. 如果如果”过期集合”中全部移除全部移除仍不能满足,将OOM
allkeys-random ->对所有的数据,采取”随机选取”算法,并移除选中的K-V,直到”内存足够”为止
volatile-ttl ->对”过期集合”中的数据采取TTL算法(最小存活时间),移除即将过期的数据.
noeviction ->不做任何干扰操作,直接返回OOM异常
另外,如果数据的过期不会对”应用系统”带来异常,且系统中write操作比较密集,建议采取”allkeys-lru”。
由以上可以看出,对没设置expire的数据,产生影响的是allkeys-lru机制,allkeys-random。
所以redis没设置expire的数据是否会删除,是由你自己选择的删除机制决定的。
在Redis服务器占用内存达到maxmemory的情况下,当再想增加内存占用时,会按maxmemory-policy机制将老的数据删除。这里简单说一下volatile-lru,Redis会按LRU算法删除设置了过期时间但还没有过期的key,而对于没有设置过期时间的key,Redis是永远保留的。当然,如果你不想删除没有过期的key,那可以使用noeviction机制
原文:https://segmentfault.com/q/1010000004490914
LRU:http://www.jb51.net/article/68260.htm
- 如果redis没有设置expire,他是否默认永不过期?
- 设置redis key的expire过期时间
- Redis设置Key的过期时间 – EXPIRE命令
- MemcachedClient 过期时间设置 expire
- Session设置永不过期
- memcache 设置 永不过期
- redis expire key 过期不删除
- linux新建用户默认90天密码过期,设置永不过期方法。
- redis数据库队列(list),集合(set)元素设置类似过期(expire)功能
- php设置session永不过期
- oracle 设置用户密码永不过期
- oracle设置账户永不过期
- 设置php脚本永不过期
- Android 设置Activity永不过期
- Mongodb 设置过期时间Expire Date
- oracle修改密码永不过期(默认180天过期)
- Redis 下key的过期时间详解 :expire
- redis 下key的过期时间详解:expire
- linux脚本日期每次递减一天
- 嵌入式处理器-2.1
- CORS解决跨域问题
- 张小龙“微信小程序之道”
- 获取上一次操作的请求路径
- 如果redis没有设置expire,他是否默认永不过期?
- Python3之基于UDP协议的网络编程
- 快速排序
- 通过两个坐标系对应点计算转换关系
- 复杂网络分析软件NetworkX和UCINET数据关联的方法
- 2010–2011, NEERC, Northern Subregional训练总结【6/10】
- Java安全学习笔记(二)--创建对称密钥
- 树分治入门 POJ1741,hdu5977
- Hbase为什么会出现