Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis :Wie kann man einen Schlüssel gleich dem Wert eines anderen Schlüssels setzen?

Sie können dies mit einem Lua-Skript tun:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 ist der Quellschlüssel
  2. KEYS2 ist der Zielschlüssel

Das folgende Beispiel verwendet SCRIPT LOAD, um das Skript zu erstellen, und ruft es unter Verwendung von EVALSHA auf, wobei die folgenden Argumente übergeben werden:

  1. Der vom Skriptladen zurückgegebene SHA1
  2. eine 2 für die Anzahl der Schlüssel, die übergeben werden
  3. Der Quellenschlüssel
  4. Der Zielschlüssel.

Ausgabe:

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"

Es scheint eine Menge Zeug zu sein, verglichen mit einem einfachen GET und dann einem SET, aber sobald Sie das Skript geladen (und den SHA1 auswendig gelernt) haben, können Sie es wiederholt verwenden.