У меня проблема.
В моем проекте у меня есть несколько серверов, которые изменяют те же данные в Redis.
Все серверы могут иметь разное время.
Другими словами, в некоторых случаях я не могу полагаться на время сервера приложений.
Поэтому я хотел бы использовать время Redis в качестве общей базовой точки.
Все может быть хорошо, документация PHPRedis говорит, что есть функция, которая делает именно то, что мне нужно: время().
Но вот большой сюрприз:
//... create connection etc...
var_dump($redis->time());
Выход:
bool(false)
Вопрос — что это, черт возьми?
Вы когда-нибудь сталкивались с такой проблемой?
Как я могу получить время сервера Redis, используя его функции?
Примечание: другие функции redis работают нормально, я могу читать и записывать данные. Соединение в порядке и создано правильно.
Здесь нет никакой помощи.
Как и везде.
Так что мне нужно было изобрести обход …
Вот оно, если это кому-то нужно.
// Generate unique temporary key
$key = uniqid() . time();
// Take some random future TS
$future_ts = time() + 1000;
$redis->setex($key, time(), 5);
$redis->expireAt($key, $future_ts);
// This variable now contains what I need
$redis_ts = $future_ts - $redis->ttl($key);
Других решений пока нет …