키스페이스 알림

키스페이스 알림 (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.confnotify-keyspace-eventsCONFIG 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) 이벤트

더 알아보기 (Learn more)