Redis通过expire命令来设置key的过期时间,在redis术语里面,把设置了expire time的key 叫做:volatile keys,意思就是不稳定的key。
过期设置
语法:EXPIRE key seconds (该命令为参数中指定的Key设定超时的秒数,在超过该时间后,Key被自动的删除。如果该Key在超时之前被修改,与该键关联的超时将被移除。)
或者
语法:EXPIREAT key timestamp (该命令的逻辑功能和EXPIRE完全相同,唯一的差别是该命令指定的超时时间是绝对时间,而不是相对时间。该时间参数是Unix timestamp格式的,即从1970年1月1日开始所流经的秒数。)
在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time
过期时间清除
Key过期时间清除的情况:
1、PERSIST key 如果Key存在过期时间,该命令会将其过期时间消除,使该Key不再有超时,而是可以持久化存储。
2、SET key newValue 此时会清除过期时间,这个需要特别注意
3、DEL key 这个很显然会清除过期时间
一些触发修改value的操作(除了SET),如lpush,lset,incr等,将不会清除过期时间(redis2.1.3之前的版本是会清除的)。
另外 RENAME 也不会清除过期时间
过期处理
redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。
删除策略一般由以下几种
定时删除:在设置键的过期时间时,创建一个定时事件,当过期时间到达时,由事件处理器自动执行键的删除操作。
惰性删除:放任键过期不管,但是在每次从 dict 字典中取出键值时,要检查键是否过期,如果过期的话,就删除它,并返回空;如果没过期,就返回键值。
定期删除:每隔一段时间,对 expires 字典进行检查,删除里面的过期键。
而Redis是采用的惰性删除+定期删除来处理过期数据
相关推荐
在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。以上做法可能不尽人意,目前也没找到好的解决...
主要给大家介绍了关于Redis获取某个前缀的key脚本的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
1.springboot集成redis,并监听redis过期key做相应的业务处理
EXPIRE设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。 TTL查找某个key还有多长时间过期,返回时间秒 ...
在Redis中,对于过期key的清理主要有惰性清除,定时清理,内存不够时清理三种方法,下面我们就来具体看看这三种清理方法。
# Redis基础 ## 数据类型 ### strings * `set key value`和`get key`,注意set操作会覆盖已有的key/value,若不希望覆盖可使用`set key value nx` * `mset key1 value1 key2 value2 ...`和`mget key1 key2 ...`...
Redis_Key操作命令,Redis主要用于数据队列存储
通过Key前缀分析Redis的内存占用按内存大小排序导出结果到csv文件
一、获取所有Key # -*- encoding: UTF-8 -*- __author__ = "Sky" import redis pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0) r = redis.StrictRedis(connection_pool=pool) keys = r.keys() print ...
主要介绍了java操作Redis缓存设置过期时间的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Redis热点key及大key解决方案.docx
主要介绍了spring-redis-session 自定义 key 和过期时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
php+redis 键值过期自动监听 可以用作定时任务 当redis键值过期的时候就会触发回调方法,然后执行自己的程序,比如30分钟订单自动取消
Redis内存过期策略,Redis的内存回收机制,相关配置项
这是介绍关于redis的资料,适合了解的人,但是不是特别适合深入学习的人
实现redis的key值过期监听事件,且集成jedis实现redis的简单调用,内有功能备注
用java写了个redis批量删除以指定内容开头的key,使用时只需要修改config.json中的配置(host,port,database,delKey:指定的key值开头),然后java -jar demo.jar运行即可
redis分布式锁带方法名和过期时间,如果不传方法名自动获取改方法名做key,使锁的粒度到方法级别,释放锁的时间可以根据自己的需要自定义,默认5s,为了解决超大方法执行时间太长,还没有执行完,锁就被释放掉的问题.
删除单个列表、集合、有序集合或哈希表类型的 key ,时间复杂度为 O(M),M 为以上数据结构内的 元素数量。 返回值: 被删除 key 的数量。 # 删除单个 key redis> SET name huangz OK redis> DEL name (integer) 1 # ...
Redis and other Key-Value Stores Consistency: Consistency guaranteed only on a single key. Distributed stores are eventually consistent. Resolution of update conflicts varies.