Как увеличить значение в Redis?

Я пытаюсь увеличить значение для пары "ключ-значение" в redis, если значение уже существует в redis. Например, если у нас есть

client.get(key, function checkRedis(err, data){
  var redisData = JSON.parse(data);
  if(redisData === null){
     //do something
  }else{
     client.incr(redisData.val);
  }
});

Насколько я понимаю, согласно документации использование "incr" должно автоматически увеличивать это конкретное значение на 1. Но я не вижу, чтобы это произошло успешно, я что-то упустил?


person RRP    schedule 31.05.2016    source источник


Ответы (2)


Вам нужно указать client key, а не значение.

Я считаю, что нижеследующее сделает то, что вам нужно.

client.get(key, function checkRedis(err, data){
  var redisData = JSON.parse(data);
  if(redisData === null){
     //do something
  }else{
     redisData.val++;
     client.set(key, redisData);
  }
});
person Russbear    schedule 31.05.2016
comment
что, если структура выглядит следующим образом parentKey: {key1: {val: 0}, .......} и мне нужно увеличить значение val - person RRP; 01.06.2016
comment
@RajPowar, чем тебе придется делать client.incr("key1") - person Caius; 01.06.2016
comment
Я ничего не знаю о ioredis, но redis - это хранилище значений ключей. Насколько мне известно, вы не можете увеличивать значение свойства объекта. Я обновил свой ответ - это может помочь - person Russbear; 02.06.2016

Для увеличения значения в Redis необходимо использовать клавишу INCR

   const redisClient = require('ioredis');
   const name = 'Bob';
   redisClient.incr('id', (err, id) =>
   {
      redisClient.hmset('user:' + id, 'username', name);
   });
person Jyotirmoy Upadhaya    schedule 30.07.2020