如何设置redis中hash的field的expire ?

疯狂的艺术家 发布于 2014/04/22 22:35
阅读 35K+
收藏 0

比如:

  1.         redis.hset("website", "google", "www.google.cn"); 
  2.         redis.hset("website", "baidu", "www.baidu.com"); 
  3.         redis.hset("website", "sina", "www.sina.com"); 
  4.          
如何 单独设置 google ,baidu,sina,的 expire 


加载中
0
kenping
kenping

expire只对顶级key有效,你可以这样用

redis.setex("website_google", 300, "www.google.cn"); 
redis.setex("website_baidu", 300, "www.baidu.com"); 
redis.setex("website_sina", 300, "www.sina.com"); 

陈佳庆
陈佳庆
get操作是O(1)
kenping
kenping
回复 @疯狂的艺术家 : 没事,这点消耗对redis的性能可以说没影响,你也感觉不到。
疯狂的艺术家
疯狂的艺术家
这样用的话, Get操作的算法复杂度是不是就o(n)了 要扫描所有key
0
aiasfina
aiasfina


好像没办法,相关的issue还是open状态

https://github.com/antirez/redis/issues/1042

可以用下面的方法代替 https://github.com/antirez/redis/issues/167

redis 127.0.0.1:6379> hset expire:me name tom
(integer) 0
redis 127.0.0.1:6379> hget expire:me name
"tom"

redis 127.0.0.1:6379> expire expire:me 10
(integer) 1
redis 127.0.0.1:6379> ttl expire:me
(integer) 8


返回顶部
顶部