У меня есть приложение, которое хранит значения ключей в Redis, длина ключа составляет 8 байтов, а значение представляет собой список целых чисел. Моя задача состоит в том, чтобы найти способ истечения старых значений для данного ключа.
худшее, что я могу сделать, это добавить временные метки к каждому значению и исключить их на стороне клиента. Есть ли чистый способ сделать это на стороне сервера или использовать другое решение вместо Redis?
Обновление:
мы можем сделать это Луа.
получить предметы:
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