Redis
 sql >> база данни >  >> NoSQL >> Redis

Може ли redis да деактивира отговорите за конвейерни команди?

Да... поне в 2.6. Можете да направите това в LUA скрипт и просто да накарате LUA скрипта да върне празен резултат. Тук се използва клиентът за книжни втулки:

const int DB = 0; // any database number
// prime some initial values
conn.Keys.Remove(DB, new[] {"a", "b", "c"});
conn.Strings.Increment(DB, "b");
conn.Strings.Increment(DB, "c");
conn.Strings.Increment(DB, "c");

// run the script, passing "a", "b", "c", "c" to
// increment a & b by 1, c twice
var result = conn.Scripting.Eval(DB,
    @"for i,key in ipairs(KEYS) do redis.call('incr', key) end",
    new[] { "a", "b", "c", "c"}, // <== aka "KEYS" in the script
    null); // <== aka "ARGV" in the script

// check the incremented values
var a = conn.Strings.GetInt64(DB, "a");
var b = conn.Strings.GetInt64(DB, "b");
var c = conn.Strings.GetInt64(DB, "c");

Assert.IsNull(conn.Wait(result), "result");
Assert.AreEqual(1, conn.Wait(a), "a");
Assert.AreEqual(2, conn.Wait(b), "b");
Assert.AreEqual(4, conn.Wait(c), "c");

Или да направите същото с incrby , предавайки числата "by" като аргументи, променете средната част на:

// run the script, passing "a", "b", "c" and 1, 1, 2
// increment a & b by 1, c twice
var result = conn.Scripting.Eval(DB,
    @"for i,key in ipairs(KEYS) do redis.call('incrby', key, ARGV[i]) end",
    new[] { "a", "b", "c" }, // <== aka "KEYS" in the script
    new object[] { 1, 1, 2 }); // <== aka "ARGV" in the script


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изтрия всичко в Redis?

  2. Python Reddis Queue ValueError:Функциите от модула __main__ не могат да бъдат обработени от работници

  3. изпрати съобщение надолу по веригата до google ccs с node js

  4. Как да получите обратно повикване, когато ключът изтече в REDIS

  5. Spring Redis - Прочетете конфигурацията от файла application.properties