[REDIS] 레디 스 : 어떻게 다른 키의 값과 동일한 하나의 키를 설정하는 방법?
REDIS레디 스 : 어떻게 다른 키의 값과 동일한 하나의 키를 설정하는 방법?
내가 다음을 수행 할 수 있습니다 레디 스에있는 빠른 명령이 있나요
나는 Y는 키 X의 값과 동일한 키 값을 설정합니다.
어떻게 레디 스 클라이언트에서이 일을 가야합니까.
나는 표준 레디 스-CLI 클라이언트를 사용합니다.
나는 기본적으로는 다음의 몇 가지 상당 찾고 있어요 -
Y.Val() = X.Val()
해결법
-
==============================
1.당신은 루아 스크립트를 사용하여이 작업을 수행 할 수 있습니다
당신은 루아 스크립트를 사용하여이 작업을 수행 할 수 있습니다
redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
사용 SCRIPT의 LOAD 아래의 예는 스크립트가 다음 인수를 전달 EVALSHA를 사용하여 원용을 만들 수 있습니다 :
산출:
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을 기억) 일단 당신은 반복해서 다시 사용할 수 있습니다.
-
==============================
2.당신이 원하는 스크립트 로딩을 해달라고 경우 아래 하나의 명령으로 작동합니다.
당신이 원하는 스크립트 로딩을 해달라고 경우 아래 하나의 명령으로 작동합니다.
127.0.0.1:6379> eval "return redis.call('SET', KEYS[2], redis.call('GET', KEYS[1]))" 2 key1 key2 OK
키 1의 값이 이미 다른 설정해야하는 것으로 당신은 오류가 아래를 얻을 것이다
그래서 다음과 세트처럼 확인
127.0.0.1:6379> GET key1 (nil) 127.0.0.1:6379> SET key1 hello OK
지금은 작동합니다.
당신은 또 다른 새로운 맵 키에 맵을 복사하려면
eval "return redis.call('HMSET', KEYS[2], unpack(redis.call('HGETALL', KEYS[1])))" 2 existingMapKey newMapKey
삽입 시간 자체가 당신이 MSET를 사용하여 두 개의 키에 값을 삽입 할 수있는 동안 또 하나의 방법입니다.
redis> MSET key1 "Hello" key2 "Hello" "OK" redis> GET key1 "Hello" redis> GET key2 "Hello"
물론이 키가 이미 생성 될 때 복사의 문제가 해결되지 않습니다.
또한 레디 스 개 이상의 키가 같은 값 객체를 언급하고있는 방법은 없습니다 있습니다. 이러한 모든 해결 방법은 중복 값 객체를 생성합니다. 그래서 업데이트되는 값 중 하나가 다른 값 오브젝트에 반영되지 않습니다.
-
==============================
3.아니,이 작업을 수행 할 빠른 명령이 없습니다. 당신은 소스 키의 값을 GET 한 다음 새 키의 값을 설정해야합니다.
아니,이 작업을 수행 할 빠른 명령이 없습니다. 당신은 소스 키의 값을 GET 한 다음 새 키의 값을 설정해야합니다.
출처 : http://redis.io/commands#string
from https://stackoverflow.com/questions/10891213/redis-how-to-set-one-key-equal-to-the-value-of-another-key by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 내 클러스터 Node.js를 / socket.io / 레디 스 펍 / 하위 응용 프로그램에서 중복 메시지를 수신하고 있습니다 (0) | 2020.01.13 |
---|---|
[REDIS] (채팅 응용 프로그램) Resque + 레디 스과 함께 ActionController :: 라이브를 사용하는 방법 (0) | 2020.01.13 |
[REDIS] 레디 스 감시 고정 표시기 이미지 / Dockerfile (0) | 2020.01.13 |
[REDIS] 셀러리 작업을 설정하는 문제는 파이썬에서 백엔드 (0) | 2020.01.13 |
[REDIS] sidekiq 두 개의 별도의 레디 스 인스턴스에 대한 작업? (0) | 2020.01.13 |