event_notification
Redis Event Notification
Redis Server Course | Redis Technical Support | Redis Enterprise Server |
---|
Event Notification
이 기능은 2.8.0 부터 사용가능합니다.
레디스는 새로운 키 입력/변경 등의 이벤트가 발생할 때 알려주는 기능(Pub/Sub)이 있습니다.
이 문서는 버전 5.0.2를 기준으로 작성했습니다.
레디스는 새로운 키 입력/변경 등의 이벤트가 발생할 때 알려주는 기능(Pub/Sub)이 있습니다.
이 문서는 버전 5.0.2를 기준으로 작성했습니다.
이벤트 종류
이벤트 종류는 다음과 같습니다.- 키(데이터) 입력/변경: set 같은 명령으로 키/값이 새로 입력되거나 수정될 때
- 키 삭제: del 같은 명령으로 키가 삭제될 때
- 키 만료 시간 설정으로 키가 삭제될 때
- Maxmemory 정책으로 키가 퇴출(eviction)될 때
채널명 구성
- 키 중심: __keyspace@<dbid>__:key command
- 명령 중심: __keyevent@<dbid>__:command key
알림(publish) 방식
- 키 중심: publish __keyspace@0__:key set
- 명령 중심: publish __keyevent@0__:set key
받을 때
- 모든 키에 대해서 받으려면: psubscribe __keyspace@0__:*
- tag로 시작하는 키에 대해서 받으려면: psubscribe __keyspace@0__:tag*
- 특정 키를 지정해서 받으려면: subscribe __keyspace@0__:tag0001
- 모든 쓰기 명령에 대해서 받으려면: psubscribe __keyevent@0__:*
- 특정 명령에 대해서 받으려면: subscribe __keyevent@0__:set
사용 예, 주의할 내용
- 부하 분산을 위해서 마스터에는 이벤트 설정을 하지 않고 복제 서버에만 이벤트를 설정해서 클라이언트는 복제 서버에 접속해서 이벤트를 받을 수 있습니다.
- mset key1 value1 key2 value2 -> __keyspace@0__:key1 set
__keyspace@0__:key2 set - incr key -> __keyspace@0__:key incrby
- decr key -> __keyspace@0__:key incrby
- rename key1 key2 -> __keyspace@0__:key1 rename_from
__keyspace@0__:key2 rename_to - unlink key -> __keyspace@0__:key del -> dbSyncDelete()/dbAsyncDelete()
- pexpire key -> __keyspace@0__:key expire
- set key value ex 10 -> __keyspace@0__:key set
__keyspace@0__:key expire - lpop mylist -> __keyspace@0__:mylist lpop
__keyspace@0__:mylist del <- 마지막 원소가 삭제되었으면
ltrim, lrem, srem, spop, 등도 마찬가지 입니다. - smove myset myset2 mem1 -> __keyspace@0__:myset srem
__keyspace@0__:myset2 sadd - zadd myzset incr 10 mem1 -> __keyspace@0__:myzset zincr
- zincrby myzset 10 mem1 -> __keyspace@0__:myzset zincr
- 키가 만료되어 이벤트를 받으면: __keyspace@0__:key expired
- 위 경우 복제 서버에서 받으면: __keyspace@0__:key del
- Maxmemory 설정으로 키가 삭제된 경우: __keyspace@0__:key evicted
- 위 경우 복제 서버에서 받으면: __keyspace@0__:key del
이벤트 종류
- K Keyspace events, publish prefix "__keyspace@<db>__:".
- E Keyevent events, publish prefix "__keyevent@<db>__:".
- g 공통 명령: del, expire, rename, ...
- $ 스트링(String) 명령
- l 리스트(List) 명령
- s 셋(Set) 명령
- h 해시(Hash) 명령
- z 소트 셋(Sorted set) 명령
- x 만료(Expired) 이벤트 (키가 만료될 때마다 생성되는 이벤트)
- e 퇴출(Evicted) 이벤트 (최대메모리 정책으로 키가 삭제될 때 생성되는 이벤트)
- A 모든 이벤트(g$lshzxe), "AKE"로 지정하면 모든 이벤트를 받는다.
이벤트 설정
- notify-keyspace-events "KEA": 모든 이벤트를 발생
- notify-keyspace-events "Kg": 키 이벤트 + 공통 명령 발생
- notify-keyspace-events "Kx": 키 이벤트 + 만료 이벤트 발생
- notify-keyspace-events "": 이벤트 제거
<< Replication Performance | Client Side Caching >> |
---|
조회수 :
Email
답글이 올라오면 이메일로 알려드리겠습니다.