<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_mine_shaft" android:state_pressed="true"/>
<item android:drawable="@drawable/button_dove_gray"/>
</selector>
密钥已过期,但密钥在内部设置。我必须在redis中自动删除过期密钥
答案 0 :(得分:1)
您无法在SET
内的个别成员上设置TTL。
此博客文章深入探讨了该问题,并提供了一些解决方法。 https://quickleft.com/blog/how-to-create-and-expire-list-items-in-redis/
希望有所帮助。
答案 1 :(得分:1)
请完整准备此页面:https://redis.io/topics/notifications
总结一下,您必须有一个哨点程序来监听PUB/SUB
条消息,并且您必须更改redis.conf
文件以启用 keyevent到期通知:
redis.conf
中的:
notify-keyspace-events Ex
为了启用该功能,使用非空字符串,由...组成 多个字符,每个字符都有特殊含义 根据下表
E Keyevent events, published with __keyevent@<db>__ prefix.
x Expired events (events generated every time a key expires)
如果你的数据库是__keyevent@0__:del
,那么sentinel程序必须收听频道0
。如果使用除零之外的其他任何内容,请更改数据库编号。
然后,当您订阅该频道并收到即将到期的key
时,您只需发出SREM trending_mints key
即可将其从该集合中删除。
重要强>
访问并找到密钥时会生成过期事件 由上述系统中的一个系统过期,因此没有 保证Redis服务器能够生成过期 关键生存时间达到零值时的事件。
如果没有命令持续定位该键,并且有许多键 与TTL相关联,可能会在时间之间出现明显的延迟 生活的关键时间降至零,以及过期事件的时间 生成。
Redis服务器删除时会生成基本过期的事件 关键,而不是在理论上生活的时间达到价值 为零。
因此, 键会因为到期而被删除,但是在TTL到达零的时刻, 通知 。
ALSO ,如果您的哨兵节目错过了PUB/SUB
消息,那么......就是这样,您将不会再收到通知! (这也在上面的链接上)