키스페이스 알림
키스페이스 알림 (Keyspace notifications)
키스페이스 알림은 클라이언트가 Pub/Sub 채널을 구독해서 Redis 데이터셋에 영향을 주는 이벤트를 실시간으로 받게 해주는 기능입니다. 특정 키에 영향을 준 모든 명령, LPUSH를 받은 키, DB 0에서 만료된 키 등 다양한 사건을 수신할 수 있습니다. 단, Redis Pub/Sub은 fire-and-forget 방식이라 구독자가 끊어졌다 다시 붙으면 그 사이의 이벤트는 유실됩니다.
출처: 공식문서
이벤트 종류
데이터 영역에 영향을 주는 모든 작업에 대해 두 종류의 채널로 이벤트가 발행됩니다. 예를 들어 DB 0의 mykey를 지우는 DEL은 다음 두 개의 PUBLISH와 동일한 메시지를 만듭니다.
PUBLISH __keyspace@0__:mykey del
PUBLISH __keyevent@0__:del mykey
__keyspace@접두사(Key-space): 특정 키(mykey)에 대한 모든 이벤트를 구독하며, 메시지로 이벤트 이름(del)을 받습니다.__keyevent@접두사(Key-event): 특정 이벤트(del)만 구독하며, 메시지로 키 이름(mykey)을 받습니다.
필요한 종류의 알림만 골라 활성화할 수 있습니다.
설정 (Configuration)
기본적으로 키스페이스 알림은 CPU를 조금 쓰기 때문에 꺼져 있습니다. redis.conf의 notify-keyspace-events나 CONFIG SET으로 켭니다. 빈 문자열이면 비활성, 비어있지 않은 문자열이면 각 문자의 의미에 따라 활성화됩니다.
K Keyspace 이벤트 (__keyspace@__ 접두사)
E Keyevent 이벤트 (__keyevent@__ 접두사)
g 일반 명령 (DEL, EXPIRE, RENAME 등 타입 비종속)
$ String 명령
l List 명령
s Set 명령
h Hash 명령
z Sorted set 명령
t Stream 명령
a Array 명령
d Module 키 타입 이벤트
x 만료(Expired) 이벤트
e 퇴출(Evicted) 이벤트 (maxmemory)
m 키 미스(Key miss) 이벤트