2016-07-10 3 views
1

Мы хотели бы, чтобы RPUSH/LPUSH ключ с пустым списком.
Это по соображениям непротиворечивости: когда ключ считывается с LRANGE, чем пустой список или нет, остальная часть кода ведет себя одинаково.

Почему факт, что если ключ имеет пустой список, он является проблемой?
Поскольку мы используем Redis в качестве кеша и хотели бы отличить 2 ситуации:
1. Конкретный ключ с соответствующими значениями еще не был кэширован. В этом случае мы хотим рассчитать значения (занимает много времени) и кэшировать их. Результатом вычисления может быть пустой список.
2. Ключ с пустым списком уже был кеширован. В этом случае мы хотели бы не выполнять вычисления и возвращать пустой список.
Redis - как к RPUSH/LPUSH пустым списком

Следующие параметры не работают:

1. Клавиша rpush -> не найдено значение списка с «неправильным количеством аргументов».
2. Клавиша rpush [] -> добавляет '[]' Item

The (некрасиво) решение, которое мы в настоящее время используют в сохранении одного пункта списка с "EMPTY-ITEM" пункта, и проверяя это, когда читаем список.

Любые идеи?

Спасибо

ответ

2

Пустых списков не существует в Redis - список должен быть один или несколько элементов. Пустые списки (например, в результате появления непустого) автоматически удаляются.