我有一个在Redis中存储键值的应用程序,键的长度为8个字节,并且值是整数列表。我的挑战是找到一种方法来使给定密钥的旧值失效。 我能做的最坏的事情是为每个值添加一个时间戳,并在客户端将其逐出。是否有一种干净的方法可以在服务器端执行此操作,或者使用其他解决方案代替Redis?
更新:
我们可以通过lua做到这一点。
获取物品:
local currenttime=redis.call('time')[1]
local indexes = redis.call("smembers", KEYS[1])
local values=''
for k,v in pairs(indexes) do
local value, unixtime=string.match(v, "(.*)%:(.*)")
if(tonumber(unixtime)+60>tonumber(currenttime)) then
values=value..values..':'
else
redis.call("SREM",k,v)
end
end
return values
添加项目:
local time=redis.call('time')
local r=redis.call("sadd", KEYS[1],KEYS[2]..":"..time[1])
return r