基于值的Redis到期

时间:2019-03-22 20:35:40

标签: java redis lua

我有一个在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

0 个答案:

没有答案