Клиент RedisCache StackExchange — IDatabase.KeyDeleteAsync — нужны сценарии, когда он возвращает false

Мы используем клиент Stackexchange для подключения к Redis. У Redis есть метод IDatabase.KeyDeleteAsync, который возвращает логическое значение. В каких сценариях этот метод вернет false?


person Pratik Mehta    schedule 16.04.2016    source источник


Ответы (1)


Он вернет false, если ключ ранее не существовал (когда команда DEL возвращает 0).

Например:

var ctx = ConnectionMultiplexer.Connect("localhost:6379");
var db = ctx.GetDatabase();

db.StringSet("key", "value");
var @true = db.KeyDelete("key");
var @false = db.KeyDelete("key");

Вы можете проверить исходный код DemandZeroOrOneProcessor, где логика установки результата в true, когда команда возвращает 1, и false, когда команда возвращает 0.

person thepirat000    schedule 17.04.2016
comment
Спасибо. Любой другой сценарий, когда он возвращает false? - person Pratik Mehta; 20.04.2016
comment
Согласно redis.io/commands/del, сама команда Redis возвращает 0, если ключ не существует, который код библиотеки преобразуется в false github. com/StackExchange/StackExchange.Redis/blob/master/src/ - person stefann; 27.05.2020
comment
Я проверил локально, и кажется, что вы всегда будете получать ложные результаты, если используется огонь и забвение. await db.KeyDeleteAsync(key, CommandFlags.FireAndForget) - person unsafePtr; 03.08.2020