Я хочу выполнить команду HSET
, но только если ключ существует.Похоже на HSETNX
, за исключением exists
вместо not exists
. Я читал о том, что, возможно, использую WATCH или что-то еще, но пока не могу понять.Я был бы признателен за толчок в правильном направлении.Единственное, что я вижу, это, но я не вижу, как это работает, учитывая, что это даже недопустимые команды redis.
HSET, если ключ существует
Кроме того,после прочтения о WATCH, что касается меня, потому что я не хочу прерывать транзакцию, если приходит другой запрос.
Я в основном пытаюсь выполнить HGETALL и сразу после того, как выдает вторую команду для HSET, говоря, что она была прочитана один раз.
После этого я хочу, чтобы все последующие запросы знали, чтоон уже прочитан.
Проблема в том, что когда я вызываю HSET для ключа, который не существует, вместо простого сбоя он создает новую запись в базе данных redis, которая мне не нужна.Я хочу, чтобы он обновлял записи только в том случае, если он существует, без необходимости проверять, существует ли он вначале
В соответствии с этим этот метод все равно не будет работать для высокой конкуренции (будет много запросов к ключу)
https://github.com/antirez/redis/issues/441
Там написано, что я мог бы как-то использовать скрипты, но я не уверен