서브키 알림
서브키 알림 (Subkey notifications)
서브키 알림은 Redis 8.8에서 추가된 기능으로, 기존 키스페이스 알림을 확장해 키뿐 아니라 서브키(해시의 필드, JSON 문서의 경로, 배열의 요소 등)와 이벤트 타입까지 함께 전달합니다. 기존 알림은 HSET·HDEL·HEXPIRE로 해시 필드가 바뀌어도 키 이름과 이벤트 타입만 전달했지만, 서브키 알림은 영향받은 필드 이름을 메시지 페이로드에 실어 보냅니다. 전용 Pub/Sub 채널로 전달되며 키스페이스/키이벤트 채널과 독립적입니다.
출처: 공식문서
알림 채널
네 가지 채널 타입이 있고 각각 다른 구독 패턴에 맞습니다.
| 채널 형식 | 페이로드 |
|---|---|
__subkeyspace@<db>__:<key> |
` |
__subkeyevent@<db>__:<event> |
`<key_len>: |
__subkeyspaceitem@<db>__:<key> |
<event> |
| `subkeyspaceevent@ |
- Subkeyspace (
__subkeyspace@<db>__:<key>): 특정 키를 구독, 메시지에 이벤트 타입과 서브키 이름. - Subkeyevent (
__subkeyevent@<db>__:<event>): 특정 이벤트 타입을 구독, 메시지에 키 이름과 서브키 이름. - Subkeyspaceitem (
__subkeyspaceitem@<db>__:<key>): 키+서브키 조합 구독, 메시지에 이벤트 타입. - Subkeyspaceevent (
__subkeyspaceevent@<db>__:<event>|<key>): 이벤트+키 조합 구독, 메시지에 서브키 이름.
서브키는 길이 접두 형식(<len>:<subkey>)으로 인코딩되어 구분 문자를 포함한 바이너리 세이프 이름도 지원합니다. 이름에 |가 들어간 이벤트나 줄바꿈이 들어간 키는 파싱 모호성을 막기 위해 특정 채널에서 건너뜁니다. 서브키가 하나도 없으면 이벤트를 발행하지 않습니다.
설정 (Configuration)
notify-keyspace-events 설정 문자열에 네 개의 새 플래그 문자가 추가되었습니다.
S Subkeyspace 이벤트 (__subkeyspace@<db>__ 접두사)
T Subkeyevent 이벤트 (__subkeyevent@<db>__ 접두사)
I Subkeyspaceitem 이벤트 (__subkeyspaceitem@<db>__ 접두사)
V Subkeyspaceevent 이벤트 (__subkeyspaceevent@<db>__ 접두사)
h Hash 명령
기존 키 레벨 플래그(K, E)와 독립적이며 임의 조합이 가능합니다. 예를 들어 서브키스페이스와 서브키이벤트만 켜려면:
$ redis-cli config set notify-keyspace-events ST
네 채널 전부를 켜려면:
$ redis-cli config set notify-keyspace-events STIV