Я делаю настройку автозаполнения и изучаю использование отсортированных наборов redis.Об этом довольно много документации, но суть заключается в добавлении префиксов, например, abc
ZADD mySet
- 0 a
, 0 ab
, 0 abc
, 0 abc*
.
Тогда какзапросы используются ZRANK
для запроса, затем на основе этого используйте ZRANGE
для получения соответствующих результатов.
В любом случае я хочу реализовать TTL не для набора, а для конкретных членовнабор.Я знаю, что это невозможно из коробки в Redis, поэтому я смотрю на реализацию альтернативного решения.Одним из вариантов является использование метки времени в качестве ранга, но это не сработает при автозаполнении, поскольку ранг имеет значение, для лексикографической сортировки им нужно иметь одинаковый балл.
Решение, которое я думаю, состоит в том, чтобы эффективнореплицировать отсортированный набор в несортированный набор.Это будет хранить значения, такие как <prefix>:timestamp
.Затем по расписанию можно получить членов здесь, проверить время, удалить из отсортированного набора, если истек.Очевидно, это увеличивает использование памяти, но это подходит.
Мой вопрос: есть ли лучшие способы сделать это?С точки зрения масштаба и или простоты.Спасибо!