Время создания ключа в редисе - PullRequest
42 голосов
/ 29 марта 2012

Предположим, я делаю это в redis на 13:30 20 Feb 2020,

> set foo "bar spam"
OK

Я хочу получить время создания foo. Есть ли что-то вроде

> gettime foo
13:30 20 Feb 2020

Ответы [ 3 ]

60 голосов
/ 29 марта 2012

Redis не хранит эту информацию.

Вы можете использовать отдельный ключ:

MULTI
SET foo "bar spam"
SET foo:time "13:30 20 Feb 2020"
EXEC

GET foo:time
10 голосов
/ 06 июня 2017

Существует другая, аналогичная опция для решения этой проблемы, для случая использования, когда вам нужен таймер для определения истекшего значения без удаления самого значения:

MULTI
SET foo "bar"
SET foo:alive 1 EX 30
EXEC

Здесь 30 - желаемое время ожидания. Затем вы можете определить, является ли значение все еще «живым» с помощью:

EXISTS foo:alive
1 голос
/ 23 сентября 2018

Я думаю, что это возможно, если вы знаете начальный TTL;

вы можете сделать так:

$init = 60; //initial time
$ttl = $redis->ttl("key"); //current ttl
$diff = $init - $ttl; //difference is the time passed after key was created
$creation = time() - $diff; //this is creation time in seconds since unix epoch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...