sql >> Database >  >> NoSQL >> Redis

Redis:Hoe stel je een sleutel gelijk aan de waarde van een andere sleutel?

Je kunt dit doen met een Lua-script:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 is de bronsleutel
  2. KEYS2 is de doelsleutel

Het onderstaande voorbeeld gebruikt SCRIPT LOAD om het script te maken en roept het op met EVALSHA en geeft de volgende argumenten door:

  1. De SHA1 is geretourneerd na het laden van het script
  2. een 2 voor het aantal sleutels dat zal worden doorgegeven
  3. De bronsleutel
  4. De doelsleutel.

Uitgang:

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"

Het lijkt heel wat te zijn vergeleken met gewoon een GET en vervolgens SET doen, maar als je het script eenmaal hebt geladen (en de SHA1) hebt onthouden, kun je het herhaaldelijk hergebruiken.



  1. Gegevens migreren in MongoDB

  2. MongoDB $cmp

  3. Wat is InputSplit in Hadoop MapReduce?

  4. pymongo.errors.CursorNotFound:cursor id '...' niet geldig op server