Мониторинг событий удаления и истечения ключей через keyspace notifications
RedisОбслуживаниеКоманда
CONFIG GET notify-keyspace-events
# E: keyevent channel, x: expire events, g: generic commands (DEL, EXPIRE, RENAME):
CONFIG SET notify-keyspace-events Exg
# Listen to expire and del events in db 0:
redis-cli -h redis1 -p 6379 --csv PSUBSCRIBE '__keyevent@0__:expired' '__keyevent@0__:del'
# Turn off:
CONFIG SET notify-keyspace-events ""Что делает
Публикует события по ключам (expire, del, set и т. п.) в каналы pub/sub, чтобы в реальном времени видеть, какой ключ и когда был удалён или истёк.
Когда использовать
Чтобы доказать, какая команда или истечение срока удаляет ключи, когда они 'исчезают сами', или для процессов, зависящих от событий истечения (закрытие сессии).
Внимание
События добавляют нагрузку на CPU и сеть; 'A' (все классы) особенно дорог на нагруженных системах, поэтому включайте только нужные классы и потом выключайте. Pub/sub работает по принципу fire-and-forget: неподключённый подписчик пропускает событие, ничего не сохраняется. Событие expired генерируется, когда ключ реально удаляется (при обращении или фоновым циклом expire), а не в момент истечения TTL.