Redissession 默认过期时间间为多少?

找不到答案?
redis能否对set数据的每个member设置过期时间?
想要使用redis的set数据集记录一组数据,每一条数据的过期时间都是30天,但这些数据不是同一天加进去的。也就是说这组数据不会在同一时间过期。这样就不能对set的key进行过期时间设定,因为一旦设置了key的过期时间,所有的member会同时过期。但是在redis的语法里又没有发现针对每个member的过期时间设定方法。请问大家有没有什么好的方法解决这个问题?
按投票排序
按时间排序
第一种方法,拆分成多个key,每个key设置过期时间。第二种方法改为hashMap存储,加一个过期时间的字段。可以用sorted set,把要过期的member和key的信息放在sorted set的member里,把过期时间放在score中。跑个任务用zrangebyscore遍历就行了。用sorted set好处是只需要遍历过期的member,不用扫描整个过期member集合。
登录后可回答问题,请
一种稳定可靠、性能卓越、可弹性伸缩的数据库服务。基于飞天分布式系统和全SSD盘高性能存储,支持主备版和集群版两套...
数据风控由阿里聚安全提供,是基于阿里大数据计算能力,通过业内领先的风险决策引擎,解决企业账号、活动、交易等关键业...
自研的分布式数据库,完全兼容MySQL,性能最高提升至MySQL的6倍
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...博客访问: 1780660
博文数量: 422
博客积分: 7040
博客等级: 少将
技术积分: 4138
注册时间:
范德萨发而为
分类: 系统运维 15:46:40
hset myKey myField myValue& -- 添加测试数据expire myKey 10 -- 设置myKey的过期时间为10s
阅读(17152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。博客分类:
key上设置一个过期时间(timeout),一旦时间到了,这个key将会被自动删除。这种特性术语通常叫做Redis的不稳定性。
一旦设置了过期时间,这个key只能被命令清除、删除或者重写其内容。这些命令包含del、set、getset以及所有的*store命令。这些命令只能改变key对应的value的存储值而不改变过期时间的设置。举个例子,使用incr改变key对应的value、使用lpush添加一个新的元素到lists中、使用hset设置field对应value的值等等这些操作都不影响已经对key设置的过期时间的属性。
设置了过期时间的key依然可以使用persist命令重新持久化。
如果key设置了过期时间,并且尚未被删除,使用rename命令重新命名后,该过期时间将转移到新的key上。事实上,rename命令重命名key后,原始的key对应属性全部发生转移。
如果调用expire或者pexpire时传给一个负值作为参数以及expireat或者pexpireat调用的时候时间戳已经过去,那么该key将直接被删除而不是等待过期。
刷新过期时间
对一个设置了过期时间的key仍然可以调用expire更新其过期时间。这
新版本和低于2.1.3版本的区别
在2.1.3版本之前,如果设置时间触发了修改value的工作,则key将会被删除,这会影响主从复制,之后的版本已经做了修正。
返回一个整数值
1)如果过期时间被设置成功,返回1
2)如果设置失败或者key不存在,则返回0
127.0.0.1:6379& flushdb
127.0.0.1:6379& set mykey "Hello"
127.0.0.1:6379& expire mykey 20
(integer) 1
127.0.0.1:6379& ttl mykey
(integer) 16
127.0.0.1:6379& expire m 10
(integer) 0
127.0.0.1:6379& ttl mykey
(integer) -2
127.0.0.1:6379& ttl m
(integer) -2
假设你有一个web服务并且对用户访问过的最新N页数据感兴趣,每60秒记录一次并放在lists中。这样整个list中就会包含有用的信心,如用户对哪个产品感兴趣。这在Redis中非常容易实现:
RPUSH pagewviews.user:&userid& http://.....
EXPIRE pagewviews.user:&userid& 60
如果用户超过60秒钟未访问网站,则这个key就会被删除,最终只能记录后来的。
这个模式也可以使用incr代替rpush实现:
pageview.user:&userid&:&productid& http:......
pageview.user:&userid&:&productid& 60
Redis Expires
keys的过期时间,Redis并没有设置有效时间,换句话说,这个key将会一直存在直到用户显式删除,如del命令。expire的命令家族将会给key设置一个过期时间,这使得key存储将花费更多的时间。一旦被设置了过期时间,时间一到,key将会被删除。
expire命令可以重新设置key的存活时间。persist命令则会持久化key。
127.0.0.1:6379& flushdb
127.0.0.1:6379& set str a
127.0.0.1:6379& ttl str
(integer) -1
127.0.0.1:6379& expire str 20
(integer) 1
127.0.0.1:6379& ttl str
(integer) 13
127.0.0.1:6379& set str b
127.0.0.1:6379& ttl str
(integer) -1
127.0.0.1:6379& expire str 100
(integer) 1
127.0.0.1:6379& ttl str
(integer) 97
127.0.0.1:6379& persist str
(integer) 1
127.0.0.1:6379& ttl str
(integer) -1
Expire的精度
在Redis 2.4过期时间的设置并不是高精度的,误差在0到1秒的误差。从2.6开始精度提高到0到1毫秒。
expire 和persist
过期时间的设置是以unix时间的绝对秒存储的(2.6以上版本是绝对毫秒)。也就是说,即使Redis 服务已经停止了,时间也还在流逝。
为了精确度,计算机时间必须保持稳定。如果将rdb文件在两台有较大时差的服务器上移动,有趣的事情将会发生,就像所有的keys均被设置了过期时间一样。
即使实在同一台正在运行的数据库实例上,它将总是检查计算机的时间设置。如果你设置某个key的过期时间是1000秒后,然后设置系统时间延后2000秒,那么该key则立即被删除而不是由1000秒的存活时间。
Expire在Redis中keys的实现
在实现方式上,有两中方法:被动和主动的。
被动方式是指,设置了过期时间的keys只有在客户端访问的时候才会被发现并对其执行删除从操作。
这种方法当然是不够好,因为有些keys是不会被再次访问到的。所以定期随机地检测keys的,对过期的keys执行清楚操作,以便于存key空间中删除。
明确来说,Redis每分钟执行10次检测:
1)在所有的建中随机找到20个设置了过期时间的keys
2)删除其中已经过期的keys
3)如果超过25%的keys被删除,那么从1)开始再次执行,知道被删除的keys比例降低到25%以下
这意味着,任何给定的时刻,被过期删除的keys的数量最大等于每秒钟写操作执行次数除以4的最大值。
过期清楚keys时复制链接和AOF文件的处理
为了保持一致性并获得较好的性能。当一个key过期时,删除AOF文件的del操作在master和slaves之间同步执行,这样不存在一致性错误的可能。
然而,slaves是不可以单独的执行del操作的,而是等待master发送过来的del指令,而此时会携带全部的过期设置信息,所以当slave被选中成为master时,它就可以单独地清楚过期的keys,完全像一个master一样。
浏览: 10999 次
来自: 北京
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'redis的mset可以像set一样设置过期时间吗 - CNode技术社区
professional & efficient
看了下api,貌似不支持,因为我有一个列表(比如说20个),需要缓存到redis,如果一个一个的去redis.set(‘key’,‘value’,‘NX’,‘EX’,60,cb);效率有点低,就想用redis.mset(‘key’,‘value’,‘key’,‘value’,‘key’,‘value’,…,cb)一次性缓存过去,但是不能设置过期时间了
实在不行,弄个计划任务,定期清理一下
如果担心发出多个命令的效率,那大可不必。nodejs的redis客户端默认是使用通讯策略的,一个命令 ≠ 一次tcp连接,在一个连接上可以发出n个命令。单个命令和多个命令的区别只在于传递数据量的多少,除此之外没有额外的消耗。可以通过网络抓包工具,看看redis客户端与服务器端的通讯数据的响应情况。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的lua 脚本 set redis值 如何指定过期时间
[问题点数:40分,结帖人yetaodiao]
lua 脚本 set redis值 如何指定过期时间
[问题点数:40分,结帖人yetaodiao]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2011年12月 扩充话题大版内专家分排名第三
匿名用户不能发表回复!|

我要回帖

更多关于 redis 默认过期时间 的文章

 

随机推荐