Redis
 sql >> डेटाबेस >  >> NoSQL >> 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 . के साथ भी ऐसा ही करने के लिए , "द्वारा" संख्याओं को तर्क के रूप में पास करते हुए, मध्य भाग को इसमें बदलें:

// 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. पायरो का उपयोग करके पांडस डेटाफ्रेम को रेडिस में कैसे सेट/प्राप्त करें?

  2. रेडिस:रेस कंडीशन और सिंगल थ्रेडेड

  3. phpRedis क्लस्टर में प्रवास और लगातार हैशिंग

  4. CentOS 7 पर रेडिस स्थापित करना

  5. रेल पर्यावरण लोड किए बिना रूबी रेस्क्यू