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

Redis :Как да задам един ключ равен на стойността на друг ключ?

Можете да направите това със скрипт на Lua:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 е изходният ключ
  2. KEYS2 е целевият ключ

Примерът по-долу използва SCRIPT LOAD за създаване на скрипта и го извиква с помощта на EVALSHA, предавайки следните аргументи:

  1. SHA1 се върна от зареждането на скрипта
  2. 2 за броя ключове, които ще бъдат предадени
  3. Изходният ключ
  4. Целевият ключ.

Изход:

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"

Изглежда, че е много неща в сравнение с просто да направите GET и след това да SET, но след като заредите скрипта (и запомните SHA1), тогава можете да го използвате многократно.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да приложите условие „ИЛИ“ в командата на клавишите за redis

  2. Redis ключовете не се показват, докато използвате Cache фасада в Laravel

  3. Да отмените ли вече изпълнявана задача в Python RQ?

  4. Известия на Redis:Вземете ключ и стойност при изтичане

  5. Влияе ли дължината на името на производителността в Redis?