У меня есть модуль Redis с пользовательской командой, которая выдает команды сразу двум различным клавишам.
Пользовательские команды получают ключ (например, myKey
), некоторые значения и выдают HSET myKey_sd1 ...
и ZADD myKey_sd2 ...
команды.
Интересно, что произойдет в конфигурации кластера, где каждый ключ может существовать в отдельном узле.
Прямо сейчас, внутри пользовательской команды модуля, я заключаю ключэто дано мне в {
и }
, поэтому я в итоге выдаю HSET {myKey}_sd1
и ZADD {myKey}_sd2
, что работает, но мне интересно, если это необходимо.
Мне также интересночто произойдет, если я получу ключ, который уже заключен в фигурные скобки (потому что пользователь модуля хочет самостоятельно контролировать хэш-слот) - например, 123_{myKey}
Прямо сейчас я все равно заключил бы этот ключв моих собственных фигурных скобках, когда я выдаю HSET и ZADD - HSET {123_{myKey}}_sd1 ...
и ZSET {123_{myKey}}_sd2
В этом случае, насколько я знаю, Redis будет вычислять хеш для 123_{myKey
, который подрывает вводпользователь (так как ония не хочу заключать 123_
часть)
Чтобы исправить это, я мог бы сделать так, чтобы моя пользовательская команда искала {
в ключе, который он получил, если он не нашел {
, ключ будет заключен в {
и }
, как я описал выше.Однако, если бы он нашел {
, он оставил бы ключ как есть, в результате чего (в случае примера выше) HSET 123_{myKey}_sd1 ...
и ZADD 123_{myKey}_sd2
- который работает как для пользователя, так и для внутренней работымодуль.
Поэтому мне интересно
Является ли вложение ключей, которые я получаю от пользователя в {
и }
, правильным способом поддержки кластеризации?
Если да, то я рассматриваю случай, когда пользователь правильно предоставляет ключ, который уже заключен в {
и }
?