我正在使用RedisPub/Sub模型(https://redis.io/topics/pubsub),我正在使用jedis客户端。我订阅了redis过期。当redis的键数较少时,这非常有效。但是如果我有超过100万个具有不同TTL的key,那么key的到期并不总是根据key的TTL发生。来自redis文档(https://redis.io/commands/expire):SpecificallythisiswhatRedisdoes10timespersecond:1.Test20randomkeysfromthesetofkeyswithanassociatedexpire.2
有些key没有有效期。我能想到的最佳方法是使用"get*"(但有数百万个key),存储它,然后使用TTL查看是否过期。如果没有,那么你设置它。这是要走的路吗?我看到一个类似的问题here,那不是unix命令。我将如何在unix或C#中实现它(我正在使用SSHNuget包)? 最佳答案 两种方法:通过redis数据库通知,你可以知道redis键上的操作,通过订阅这些消息,你可以在这些键上运行ttl。运行扫描rediskey集的任务并在其上运行ttl。主要思想是快速完成并且不阻塞redis。
TLDR版本:我希望sails中的session在特定的给定时间或日期或一天结束时到期。我放弃了尝试弄清楚如何在给定时间使sails/node中的session过期。sessions.js中的cookie.maxAge选项似乎在给定的毫秒内更新redis中keysession的TTL。所以我尝试通过运行设置每个maxAgereq.session.cookie.maxAge=Utility.getEndOfDayMilliseconds();req.session.save();我创建了一个实用程序,用于获取从当前时间到一天结束的毫秒值。当我在一个屏幕上空闲时它可以工作,但是当我在页面上
目前是否只能使整个键/值对过期?如果我想将值添加到列表类型结构并让它们在插入后1小时自动删除怎么办。这目前是否可行,或者是否需要运行cron作业来手动进行清除? 最佳答案 有一个通用模式可以很好地解决这个问题。使用排序集,并使用时间戳作为分数。然后按分数范围删除项目就变得微不足道了,这可以定期完成,或者只在每次写入时完成,读取总是忽略超出范围的元素,只读取一个分数范围。更多信息:https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs
我有一种情况,它只需要使redis中数据集的哈希键过期。有没有办法通过java和hashoperation来做到这一点。我知道redis只能支持keyexpiry而不是hashkey(subkeywithvalue)。但是有什么办法可以做到这一点。 最佳答案 Redis不支持这样的操作您可以对值使用常规散列,并使用排序集来处理过期,因此使用这样的散列会变成这样:keys=ZRANGEBYSCORE(zkey,0,now)ifkeys.size>0ZREMRANGEBYSCORE(zkey,0,now)HDEL(hkey,*keys)
我使用PouchDb并在Redis中寻找类似Expirationdate的东西,它在创建行(推送文档)时放置日期时间或告诉数据库在30分钟后删除该行。 最佳答案 PouchDb没有像Redis这样的条目的TTL。但是,如果您希望删除任何条目,则可以使用压缩。但它仍会保留文档的revid以解决冲突,仅应删除元数据。如果要删除30分钟前的条目:创建所提供时间戳的索引。定期获取30分钟前的条目,支持过滤器。here删除所有匹配查询索引的条目。 关于node.js-PouchDB上有没有类似Re
我有一个监听rediskey过期事件的node.js代码:constsubscriber=require('redis').createClient(port,host);subscriber.subscribe('__keyevent@0__:expired');subscriber.on('message',async(channel,key)=>{//dosomenthing}但是我想监听特定键名模式的过期事件。示例:我想在“foo_bar_123”和“foo_bar_456”(“foo_bar_*”)等键过期时监听事件。有没有办法通过更改“__keyevent@0__:expi
我想用redis做文章(post)-read处理。我想将每个用户阅读的每篇文章的索引存储在redis中。所以key是userId,value(可能是list)是文章索引列表。我想为每个索引值设置过期时间。这可能吗?我想知道redis命令。--附加信息我想要key-value(list),并使列表中的每个值过期。如果key过期,我不希望所有值都丢失。我想删除特定的一个键。数据显示,songkeyy-[1,2,3,4,5]expire1:100ms,2:200ms,3:30ms...像这样。如果您能推荐合适的redis命令,那就太好了。 最佳答案
我正在使用redis的hset:hset(name,k,(level,info,t))如果(name,k)在一段时间后过期,我想自动设置level=-1。任何命令,python是首选。 最佳答案 这不能以可靠的方式完成,因为到期不会在给定时刻触发某些操作,但会在稍后的某个时间在访问该key期间或在自动清理过程中触发。实际上,对于少量key,这不会造成长时间延迟,您可能会订阅一个事件,报告过期。订阅过期事件见relatedSOanswer.编辑:如果您想修改该值,则必须运行一个客户端,该客户端已订阅并通过修改该值对该事件使用react
Redis的allkeys-lrumaxmemory策略是否要求数据库中的所有键都设置过期时间?没有设置过期时的故障转移是什么? 最佳答案 allkeys-*逐出策略不关心TTL。崩溃和意外行为(看着你@ceehayoz)应该报告给项目的repo,尽管EC是一项服务,他们使用的Redis版本可能与官方OSS项目相同,也可能不同。 关于php-Redis的allkeys-lrumaxmemory策略是否要求key设置过期?,我们在StackOverflow上找到一个类似的问题: