Last active
July 9, 2020 19:40
-
-
Save diyan/e31565b48e15bd9a8ef9da44d31207d0 to your computer and use it in GitHub Desktop.
Revisions
-
diyan renamed this gist
Jul 9, 2020 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ # Sharded Redis Cluster Behavior #### Provision Sharded Redis Cluster using Docker Compose ``` $ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redis-cluster/master/docker-compose.yml > docker-compose.yml -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 98 additions and 49 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,5 @@ # Redis Cluster Behavior #### Provision Redis Cluster using Docker Compose ``` @@ -8,56 +10,41 @@ $ docker-compose up #### Write sample dataset ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 172.18.0.3:6379> set key1 value1 OK 172.18.0.3:6379> set key2 value2 -> Redirected to slot [4998] located at 172.18.0.7:6379 OK 172.18.0.7:6379> set key3 value3 OK 172.18.0.7:6379> set key4 value4 -> Redirected to slot [13120] located at 172.18.0.6:6379 OK 172.18.0.6:6379> set key5 value5 -> Redirected to slot [9057] located at 172.18.0.3:6379 OK 172.18.0.3:6379> set key6 value6 -> Redirected to slot [4866] located at 172.18.0.7:6379 OK 172.18.0.7:6379> set key7 value7 OK 172.18.0.7:6379> set key8 value8 -> Redirected to slot [13004] located at 172.18.0.6:6379 OK 172.18.0.6:6379> set key9 value9 -> Redirected to slot [8941] located at 172.18.0.3:6379 OK ``` #### Master Nodes are 3, 4, 5. Slave Nodes are 0, 1, 2. ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' @@ -80,21 +67,83 @@ role:master ``` #### Commands that touches keys hosted at multiple slots (master nodes) always fails - EXISTS key1 key2 - MGET key1 key2 - MSET key1 value1 key2 value2 - MSETNX key1 value1 key2 value2 - TOUCH key1 key2 - DEL key1 key2 - SDIFF key1 key2 - MULTI, GET key1, GET key2, EXEC ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 172.18.0.3:6379> exists key1 (integer) 1 172.18.0.3:6379> exists key1 key2 (error) CROSSSLOT Keys in request don't hash to the same slot ``` ``` 172.18.0.6:6379> mget key1 -> Redirected to slot [9189] located at 172.18.0.3:6379 1) "value1" 172.18.0.6:6379> mget key1 key2 (error) CROSSSLOT Keys in request don't hash to the same slot ``` ``` 172.18.0.3:6379> mset key1 value1 OK 172.18.0.3:6379> mset key1 value1 key2 value2 (error) CROSSSLOT Keys in request don't hash to the same slot ``` ``` 172.18.0.6:6379> touch key1 -> Redirected to slot [9189] located at 172.18.0.3:6379 (integer) 1 172.18.0.6:6379> touch key1 key2 (error) CROSSSLOT Keys in request don't hash to the same slot ``` ``` 172.18.0.3:6379> del key1 (integer) 1 172.18.0.3:6379> del key1 key2 (error) CROSSSLOT Keys in request don't hash to the same slot ``` ``` 172.18.0.3:6379> multi OK 172.18.0.3:6379> get key1 QUEUED 172.18.0.3:6379> get key2 -> Redirected to slot [4998] located at 172.18.0.7:6379 (nil) 172.18.0.7:6379> exec (error) ERR EXEC without MULTI ``` #### KEYS, SCAN commands return dataset only for current master - Both KEYS and SCAN has the same behavior, below an example for KEYS - Client must repeat same command for each Master Node in a cluster - WARN. Developer who are no aware on this won't see an error and keep working with an incomplete dataset ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "key8" 2) "key4" $ docker exec -ti redis_cluster_redis-node-4_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "key1" 2) "key5" 3) "key9" $ docker exec -ti redis_cluster_redis-node-5_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "key6" 2) "key7" 3) "key2" 4) "key3" ``` -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 0 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,8 +3,6 @@ ``` $ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redis-cluster/master/docker-compose.yml > docker-compose.yml $ docker-compose up ``` #### Write sample dataset -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -43,7 +43,7 @@ $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami re (error) CROSSSLOT Keys in request don't hash to the same slot ``` #### MULTI, SET, SET, SET, EXEC will fail if keys are belongs to multiple master nodes ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 172.18.0.6:6379> multi -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 18 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -37,12 +37,29 @@ OK OK ``` #### MSET will fail if keys are belongs to multiple master nodes ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c mset a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9' (error) CROSSSLOT Keys in request don't hash to the same slot ``` ### MULTI, SET, SET, SET, EXEC will fail if keys are belongs to multiple master nodes ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 172.18.0.6:6379> multi OK 172.18.0.6:6379> set a 1 QUEUED 172.18.0.6:6379> set b 2 -> Redirected to slot [3300] located at 172.18.0.7:6379 OK 172.18.0.7:6379> set c 3 -> Redirected to slot [7365] located at 172.18.0.3:6379 OK 172.18.0.3:6379> exec (error) ERR EXEC without MULTI ``` #### Master Nodes are 3, 4, 5. Slave Nodes are 0, 1, 2. ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -81,4 +81,5 @@ $ docker exec -ti redis_cluster_redis-node-4_1 bash -c 'REDISCLI_AUTH=bitnami re $ docker exec -ti redis_cluster_redis-node-5_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "f" 2) "b" ``` -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 4 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ $ docker exec -ti redis_cluster_redis-node-0_1 bash (container)$ REDISCLI_AUTH=bitnami redis-cli -c ``` #### Write sample dataset ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 127.0.0.1:6379> set a 1 @@ -37,13 +37,13 @@ OK OK ``` #### MSET will fail in case if keys are belongs multiple master nodes ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c mset a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9' (error) CROSSSLOT Keys in request don't hash to the same slot ``` #### Master Nodes are 3, 4, 5. Slave Nodes are 0, 1, 2. ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:slave @@ -66,7 +66,7 @@ role:master #### KEYS, SCAN commands return dataset only for current master. Client must repeat same command for each Master Node in a cluster. ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "h" -
diyan revised this gist
Jun 29, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,4 @@ #### Provision Redis Cluster using Docker Compose ``` $ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redis-cluster/master/docker-compose.yml > docker-compose.yml -
diyan created this gist
Jun 29, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,84 @@ h4. Provision Redis Cluster using Docker Compose ``` $ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-redis-cluster/master/docker-compose.yml > docker-compose.yml $ docker-compose up $ docker exec -ti redis_cluster_redis-node-0_1 bash (container)$ REDISCLI_AUTH=bitnami redis-cli -c ``` h4. Write sample dataset ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c' 127.0.0.1:6379> set a 1 -> Redirected to slot [15495] located at 172.18.0.6:6379 OK 172.18.0.6:6379> set b 2 -> Redirected to slot [3300] located at 172.18.0.7:6379 OK 172.18.0.7:6379> set c 3 -> Redirected to slot [7365] located at 172.18.0.3:6379 OK 172.18.0.3:6379> set d 4 -> Redirected to slot [11298] located at 172.18.0.6:6379 OK 172.18.0.6:6379> set e 5 OK 172.18.0.6:6379> set f 6 -> Redirected to slot [3168] located at 172.18.0.7:6379 OK 172.18.0.7:6379> set g 7 -> Redirected to slot [7233] located at 172.18.0.3:6379 OK 172.18.0.3:6379> set h 8 -> Redirected to slot [11694] located at 172.18.0.6:6379 OK 172.18.0.6:6379> set i 9 OK ``` h4. MSET will fail in case if keys are belongs multiple master nodes ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c mset a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9' (error) CROSSSLOT Keys in request don't hash to the same slot ``` h4. Master Nodes are 3, 4, 5. Slave Nodes are 0, 1, 2. ``` $ docker exec -ti redis_cluster_redis-node-0_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:slave $ docker exec -ti redis_cluster_redis-node-1_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:slave $ docker exec -ti redis_cluster_redis-node-2_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:slave $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:master $ docker exec -ti redis_cluster_redis-node-4_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:master $ docker exec -ti redis_cluster_redis-node-5_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c info' | grep 'role:' role:master ``` h4. KEYS, SCAN commands return dataset only for current master. Client must repeat same command for each Master Node in a cluster. ``` $ docker exec -ti redis_cluster_redis-node-3_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "h" 2) "a" 3) "e" 4) "i" 5) "d" $ docker exec -ti redis_cluster_redis-node-4_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "g" 2) "c" $ docker exec -ti redis_cluster_redis-node-5_1 bash -c 'REDISCLI_AUTH=bitnami redis-cli -c keys "*"' 1) "f" 2) "b"```