У меня есть кластер redis с тремя узлами.
Если я запустил узлов кластера
после подключения к одному из узлов через redis-cli
, я получу следующее вывод:
10.0.32.70:6379> cluster nodes
fedd7d9220ca59045782050e9c418103fdeee3bf 10.0.33.13:6379@1122 slave 56ada5e1cc30ba1889950df4c4203b856wc83558 0 1595241803685 2 connected
9eac3667c13055555555a52b20628da372dadc21 10.0.32.161:6379@1122 slave 81777bc32d3ff82da733e4b8f36a14e8de25e057 0 1595241801000 1 connected
861e7ed26924bcccccccaa23b1977982397000e7 10.0.33.231:6379@1122 slave 10397e832212231dc40ec687798f245a39007506 0 1595241802678 3 connected
10397e832212231dc40ec687798f245a39007506 10.0.32.117:6379@1122 master - 0 1595241801671 3 connected 10923-16383
81777bc32d3ff82da733e4b8f36a14e8de25e057 10.0.33.11:6379@1122 master - 0 1595241802000 1 connected 5462-10922
56ada5e1cc30ba1889950df4c4203b856wc83558 10.0.32.70:6379@1122 myself,master - 0 1595241801000 2 connected 0-5461
Теперь я хочу переключиться на другой узел с текущего.
Когда я использую select
, я получаю следующую ошибку:
> select 1
(error) ERR SELECT is not allowed in cluster mode
Я могу активировать переключение, используя получить 1
, получить 2
... и т. Д. (В основном это команда получения со случайным целым числом). Несколько проб и ошибок приведут меня к правильному узлу.
Есть ли способ попроще?
вы можете попробовать получить <id узла>. В твоем случае.
get 10397e832212231dc40ec687798f245a39007506
get 81777bc32d3ff82da733e4b8f36a14e8de25e057
get 56ada5e1cc30ba1889950df4c4203b856wc83558
Вы можете подключаться к главным узлам только с помощью get . Если вы попытаетесь подключиться к ведомому с помощью get. Он будет подключаться только к главному узлу.
Изнутри redis-cli вы также можете:
connect 10.0.33.11 6379
Или на моем тестовом кластере
connect localhost 30002
Возможно, полезный трюк: в моем тестовом кластере (через команду create-cluster, 3 узла, сопоставление по умолчанию) методом проб и ошибок я нашел 3 коротких ключа, которые быстрее набирать для переключения узлов:
get 3 (node 1)
get 1 (node 2)
get 4 (node 3)
( 3.14, как и PI)
Вы должны сначала запустить redis-cli
с параметром -c
для автоматического переключения узлов при установке/получении ключа.
Если ваше сопоставление кластеров отличается, вы можете просто начать использовать get, чтобы найти короткие запоминающиеся, которые работают в вашем кластере. Очевидно, что сопоставление кластера может измениться в будущем, поэтому вы не захотите использовать его в каких-либо постоянных сценариях/коде.