Мне не нравится предложение добавить / удалить, потому что оно вставляет недействительные данные, от которых может зависеть ваше приложение. Если ваше приложение делает такое предположение, оно может вызвать незначительную ошибку, которая возникает очень часто из-за состояния гонки, которое оно вводит.
Одно из решений состоит в том, чтобы взглянуть на значение, и если его временные данные притворяются, что его там нет, но для этого потребуется, чтобы весь код приложения использовал один и тот же API, или вам нужно обновить само приложение, ни то, ни другое несколько подвержен ошибкам из-за дополнительной сложности.
Если набор ключей достаточно мал, вы можете сохранить его в memcached и использовать, чтобы определить, следует ли снова получать данные из источника. Однако, если оно больше или больше, чем значение, этот метод хуже, чем просто получить все значение из memcached.
Затем вы можете решить новую проблему, используя индекс для разделения ключей на меньшие наборы (конечно, хороший способ разделить эти данные, чтобы каждый сегмент определенного размера легче сказать, чем сделать).
Реализация будет состоять из использования memcached append или prepend для поддержания вашего списка ключей, привязанного к некоторому мастер-ключу или мастер-ключу, который указывает на набор sub_keys, которые указывают на сами ключи:)
В любом случае вы делаете приложение все более и более сложным, поэтому я бы рекомендовал делать это только в том случае, если действительно существует узкое место (как это было бы, если бы необходимо часто проверять наличие ключей в сети), или если юзабилити в концерне (латентность).
В моем случае я не буду этого делать, потому что я собираюсь обращаться к memcached только через localhost и использую его как расширение своего приложения для кэширования ресурсов, для нормальной загрузки которых требуется более нескольких секунд.