Это невозможно из-за того, как работает Redis. Истечение срока действия ключа в Redis является асинхронным, и обратный вызов отсутствует, если срок действия ключа истек. Следовательно, гем Ruby (redis-rb) не поддерживает эту функциональность как таковую. Вероятно, был бы альтернативный способ смоделировать решение, которое вы строите.
Ради полноты: если вы действительно хотите такое поведение, я бы добавил, что есть один способ сделать эту работу. Вы можете подключиться к журналу репликации главного узла и наблюдать за DEL
операциями, исходящими из срока действия ключа, а затем вызывать требуемые обратные вызовы.