[REDIS] 레디 스 : 소트 세트의 점수의 합
REDIS레디 스 : 소트 세트의 점수의 합
설정 소트 레디 스에서 점수의 합을 얻을 수있는 가장 좋은 방법은 무엇입니까?
해결법
-
==============================
1.내가 생각하는 유일한 옵션은 소트 세트를 반복하고 합계 클라이언트 측을 계산한다.
내가 생각하는 유일한 옵션은 소트 세트를 반복하고 합계 클라이언트 측을 계산한다.
-
==============================
2.레디 스의 V2.6 이후 사용 가능한 레디 스 서버에서 루아 스크립트를 실행하는 가장 멋진 기능입니다. 이것은 사소한에 소트 세트의 점수를 합산의 도전을 렌더링 :
레디 스의 V2.6 이후 사용 가능한 레디 스 서버에서 루아 스크립트를 실행하는 가장 멋진 기능입니다. 이것은 사소한에 소트 세트의 점수를 합산의 도전을 렌더링 :
local sum=0 local z=redis.call('ZRANGE', KEYS[1], 0, -1, 'WITHSCORES') for i=2, #z, 2 do sum=sum+z[i] end return sum
런타임 예 :
~$ redis-cli zadd z 1 a 2 b 3 c 4 d 5 e (integer) 5 ~$ redis-cli eval "local sum=0 local z=redis.call('ZRANGE', KEYS[1], 0, -1, 'WITHSCORES') for i=2, #z, 2 do sum=sum+z[i] end return sum" 1 z (integer) 15
-
==============================
3.단지 반복 처리 (zrange / zrangebyscore)과는 값 클라이언트 측 합계 세트가 작은, 당신은 살인자의 성능이 필요하지 않은 경우, 나는 것입니다.
단지 반복 처리 (zrange / zrangebyscore)과는 값 클라이언트 측 합계 세트가 작은, 당신은 살인자의 성능이 필요하지 않은 경우, 나는 것입니다.
반면에, 당신은 수천에 대해 이야기하는 경우 - 상품의 수백만, 당신은 항상 감소를 선물을 보내는으로 증가 / 실행하는 각 사용자에 대한 합계와 함께 기준 설정을 유지할 수 있습니다.
그래서 당신이 할 때 ZINCR 123 : 선물 1 "3 | 345은"이 같은 될 수있는 별도의 ZINCR 명령을 할 수있는 :
ZINCR received-gifts 1 <user_id>
그런 다음, 특정 사용자에 대한받은 선물의 #을 얻기 위해, 당신은 단지 ZSCORE를 실행해야합니다 :
ZSCORE received-gifts <user_id>
-
==============================
4.여기 가서 키라는 접미어와 '.SS'와 카운터에서 ZSET 점수 합계를 유지하는 작은 루아 스크립트입니다. 대신 ZADD의 사용할 수 있습니다.
여기 가서 키라는 접미어와 '.SS'와 카운터에서 ZSET 점수 합계를 유지하는 작은 루아 스크립트입니다. 대신 ZADD의 사용할 수 있습니다.
local delta = 0 for i=1,#ARGV,2 do local oldScore = redis.call('zscore', KEYS[1], ARGV[i+1]) if oldScore == false then oldScore = 0 end delta = delta - oldScore + ARGV[i] end local val = redis.call('zadd', KEYS[1], unpack(ARGV)) redis.call('INCRBY', KEYS[1]..'.ss', delta)
from https://stackoverflow.com/questions/4846243/redis-sum-of-scores-in-sorted-set by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 나는 레디 스 글로벌 TTL을 설정할 수 있습니까? (0) | 2020.01.02 |
---|---|
[REDIS] 멀티 스레드 레일 환경에서 레디 스를 사용하는 가장 좋은 방법은 무엇입니까? (푸마 / Sidekiq) (0) | 2020.01.02 |
[REDIS] 레디 스는 구독을 공표 : IS 레디 스도 엄청난 스트레스를 받고 메시지를 전달하기 위해 보장? (0) | 2020.01.02 |
[REDIS] 레디 스 스캔 수 : 어떻게 패턴과 일치하는 모든 키를 반환 SCAN을 강제로? (0) | 2020.01.02 |
[REDIS] 레디 스 인상 오류 : NOAUTH 인증이 필요하지만 암호 설정이 없습니다 (0) | 2020.01.02 |