[REDIS] 레디 스에서 SCAN / HSCAN 명령에 대한 COUNT의 권장 값이 있습니까?
REDIS레디 스에서 SCAN / HSCAN 명령에 대한 COUNT의 권장 값이 있습니까?
나는 레디 스 SCAN의 경우 COUNT의 의미를 이해했다. 그러나, 레디 스의 COUNT위한 이상적인 값은 무엇인가?
해결법
-
==============================
1.기본값은이 명령이 다시 나타납니다 더 많거나 적은 10 키, 키가 드문 드문 해시 슬롯에 채워, 또는 MATCH 패턴에 의해 필터링되는 적은 경우가 될 수 있음을 의미 (10)이다. 일부 키가 해시 슬롯을 공유하는 경우 그것은 더있을 수 있습니다. 여하튼, 수행 된 작업은 COUNT 파라미터에 비례한다.
기본값은이 명령이 다시 나타납니다 더 많거나 적은 10 키, 키가 드문 드문 해시 슬롯에 채워, 또는 MATCH 패턴에 의해 필터링되는 적은 경우가 될 수 있음을 의미 (10)이다. 일부 키가 해시 슬롯을 공유하는 경우 그것은 더있을 수 있습니다. 여하튼, 수행 된 작업은 COUNT 파라미터에 비례한다.
레디 스는 단일 스레드입니다. SCAN이 도입 된 이유 중 하나는 한 번에 몇 가지 단계를 이동하여, 오랜 시간 동안 서버를 차단하지 않고 모든 키를 거치지 수 있도록하는 것입니다.
그리고 정확하게 좋은 번호가 무엇을 결정하는 기준입니다. 얼마나 오랫동안 당신은 SCAN 명령을 실행하여 레디 스 서버를 차단하고자합니다. 높을수록 COUNT, 더 이상 블록.
하자의 사용 루아 스크립트는 COUNT 충격의 감각을 얻을 수 있습니다. 서버 자원을 기반으로 결과를 얻을 수 있도록 환경을 사용합니다.
루아 스크립트 :
local t0 = redis.call('TIME') local res = redis.call('SCAN', ARGV[1], 'COUNT', ARGV[2]) local t1 = redis.call('TIME') local micros = (t1[1]-t0[1])*1000000 + t1[2]-t0[2] table.insert(res,'Time taken: '..micros..' microseconds') table.insert(res,'T0: '..t0[1]..string.format('%06d', t0[2])) table.insert(res,'T1: '..t1[1]..string.format('%06d', t1[2])) return res
여기에서 우리는 레디 스 TIME 명령을 사용합니다. 명령의 반환 :
100 만 키가 내 컴퓨터에 몇 가지 실행 :
COUNT TIME IN MICROSECONDS 10 37 100 257 1000 1685 10000 14438
주이 시간은 소켓에서 읽을 수와 버퍼 및 응답을 보내는 데 사용되는 시간은 포함되지 않습니다. 실제 시간은 커집니다. 한번 걸리는 시간은 네트워크를 여행하는 것은 당신의 레디 스 서버가 있지만 차단 시간이 아닌 시간을 포함, 레디 스를 벗어났습니다.
내가 루아 스크립트와 결과를 호출하는 방법입니다 :
> EVAL "local t0 = redis.call('TIME') \n local res = redis.call('SCAN', ARGV[1], 'COUNT', ARGV[2]) \n local t1 = redis.call('TIME') \n local micros = (t1[1]-t0[1])*1000000 + t1[2]-t0[2] \n table.insert(res,'Time taken: '..micros..' microseconds') \n table.insert(res,'T0: '..t0[1]..string.format('%06d', t0[2])) \n table.insert(res,'T1: '..t1[1]..string.format('%06d', t1[2])) \n return res" 0 0 5 1) "851968" 2) 1) "key:560785" 2) "key:114611" 3) "key:970983" 4) "key:626494" 5) "key:23865" 3) "Time taken: 36 microseconds" 4) "T0: 1580816056349600" 5) "T1: 1580816056349636"
from https://stackoverflow.com/questions/60055548/is-there-any-recommended-value-of-count-for-scan-hscan-command-in-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 활성 작업 / 백그라운드 작업에 파일 전달 (0) | 2020.02.16 |
---|---|
[REDIS] 레디 스에게 평가 명령을 실행하는 것은 nodeJS에서 루아 스크립트를 실행하려면 (0) | 2020.02.15 |
[REDIS] 레디 스`SCAN` : 방법과 일치하는 적절한 시간에 최종 결과를 확인 할 수 키를 newcomming 사이의 균형을 유지하기 위해? (0) | 2020.02.13 |
[REDIS] Redigo 레디 스 풀 정말 전역 변수로되어 있습니까? (0) | 2020.01.26 |
[REDIS] 레디 스에 정보 명령에 의해 나열 만료되는 키의 수는 내가 보는 것과 일치하지 슬레이브 (0) | 2020.01.26 |