sql >> Databáze >  >> NoSQL >> Redis

Redis :Jak nastavit, aby se jeden klíč rovnal hodnotě jiného klíče?

Můžete to udělat pomocí skriptu Lua:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 je zdrojový klíč
  2. KEYS2 je cílový klíč

Níže uvedený příklad používá SCRIPT LOAD k vytvoření skriptu a jeho vyvolání pomocí EVALSHA předáním následujících argumentů:

  1. SHA1 se vrátil z načtení skriptu
  2. 2 pro počet klíčů, které budou předány
  3. Zdrojový klíč
  4. Cílový klíč.

Výstup:

redis 127.0.0.1:6379> set src.key XXX
OK
redis 127.0.0.1:6379> get src.key
"XXX"
redis 127.0.0.1:6379> SCRIPT LOAD "redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;"
"1119c244463dce1ac3a19cdd4fda744e15e02cab"
redis 127.0.0.1:6379> EVALSHA 1119c244463dce1ac3a19cdd4fda744e15e02cab 2 src.key target.key
(integer) 1
redis 127.0.0.1:6379> get target.key
"XXX"

Zdá se, že je to spousta věcí ve srovnání s jednoduchým provedením GET a pak s SET, ale jakmile skript načtete (a zapamatujete si SHA1), můžete jej opakovaně používat.



  1. Výplň v SQL

  2. Kontrola, zda hodnota existuje v seznamu již Redis

  3. Přehled zálohování Percona pro MongoDB

  4. Vlastní chybové zprávy s Mongoose