환경
Redis Master 3대 + Slave 3대 클러스터 모드
문제 상황
특정 클러스터 노드에 multi key 명령어 사용시 에러 발생
DEL id:1 id:2 id:3 id:4 id:5
특정 노드에서 id:1 ~ id:5 에 해당하는 슬롯을 가지고 있다 하더라도
'슬롯'까지 같아야만함.
해결책
tag 사용
key에 {} 로 태그를 지정하면 특정 슬롯에 저장됨을 보장할 수 있다.
group by slot
slot 별로 키를 담아서
해당 슬롯을 가지고있는 노드로부터 multi key 연산을 실행한다.
tistory 테마 적용이 깨짐에 따라 medium 에 글을 기고했다.
https://medium.com/@mbh023/redis-multi-key-command-in-cluster-mode-feat-cross-slot-ec27b999f169
결론
- KEYS, SCAN 같은 명령어가 노드에 할당된 샤드 (슬롯 범위) 의 모든 키를 가져올 수 있다. - 노드 (샤드) 범위
- pipeline().hset() 같이 특정 노드에 포함된 키를 Batch write 하는 것은 가능하다. - 노드 (샤드) 범위
- UNLINK(key1, key2, key3 ..), DEL(key1, key2, key3 ...) 하는 것은 특정 슬롯에만 가능하다. - 슬롯 범위
'DataBase > Error' 카테고리의 다른 글
[MySQL installer]이 제품의 구성 데이터가 손상되었습니다. 고객 지원 담당자에게 문의하십시오. (0) | 2020.09.28 |
---|---|
Column count doesn't match value count at row 1 (0) | 2019.06.18 |
FOREIGN KEY 추가 Error (0) | 2019.06.02 |