확률적 자료구조 구성 파라미터
확률적 자료구조 구성 파라미터 (configuration-2)
Redis의 확률적(probabilistic) 자료구조들은 여러 구성 파라미터를 지원해요. Redis 8부터 파라미터 설정 방식이 조금 달라졌는데, 이 페이지에서 어떤 파라미터가 있고 어떻게 설정하는지 함께 정리해볼게요.
확률적 자료구조 구성 파라미터 개요
Redis 확률적 자료구조는 여러 구성 파라미터를 지원해요.
참고: Redis 8(Redis Open Source)부터 확률적 자료구조의 구성 파라미터는 다음과 같은 방식으로 설정돼요.
- 로드 시점(load time) 에
redis.conf파일을 통해 - 런타임(run time) 에는 해당되는 경우
CONFIG SET명령어를 통해
또한 Redis 8은 다른 구성 파라미터와 마찬가지로 확률적 자료구조 파라미터도 영속화해요(예: CONFIG REWRITE 명령어 사용).
Bloom filter 파라미터
다음 표는 어떤 Bloom filter 구성 파라미터를 런타임에 설정할 수 있는지, 그리고 Redis Software / Redis Cloud와의 호환성을 보여줘요.
| 파라미터 (version < 8.0) | 파라미터 (version ≥ 8.0) | 런타임 | Redis Software | Redis Cloud |
|---|---|---|---|---|
| ERROR_RATE | bf-error-rate | ✅ | ✅ 지원 | ✅ Flexible & Annual / ❌ Free & Fixed |
| bf-expansion-factor | ✅ | |||
| INITIAL_SIZE | bf-initial-size |
Cuckoo filter 파라미터
다음 표는 어떤 Cuckoo filter 구성 파라미터를 런타임에 설정할 수 있는지, 그리고 Redis Software / Redis Cloud와의 호환성을 보여줘요.
| 파라미터 (version < 8.0) | 파라미터 (version ≥ 8.0) | 런타임 | Redis Software | Redis Cloud |
|---|---|---|---|---|
| cf-bucket-size | ✅ | |||
| cf-initial-size | ✅ | |||
| cf-expansion-factor | ✅ | |||
| CF_MAX_EXPANSIONS | cf-max-expansions | ✅ | ✅ 지원 | ✅ Flexible & Annual / ❌ Free & Fixed |
| cf-max-iterations | ✅ |
참고: Redis Open Source 버전 < 8.0의 파라미터 이름은 deprecated(더 이상 권장되지 않음)이지만, Redis 8에서도 여전히 지원돼요.
참고(경고): 필터는 항상 예상 용량(expected capacity)과 원하는 오류율(error rate)에 맞춰 크기를 조정해야 해요. 작은 필터가 여럿 존재하고 대부분이 기본 크기 근처에 머무를 것으로 예상되는 경우에는 INSERT 계열 명령어를 기본값으로 사용해야 해요. 필터를 의도한 용도에 맞게 최적화하지 않으면 성능과 메모리 효율이 저하될 수 있어요.
Bloom filter 기본 파라미터
bf-error-rate
Bloom filter의 기본 오탐률(false positive rate)이에요.
- 타입: double
- 유효 범위: (0 .. 1). 유효 범위가 (0 .. 1)이지만(0% 초과 ~ 100% 미만의 오탐률), 0.25보다 큰 값은 0.25로 취급돼요.
- 기본값: 0.01
bf-expansion-factor
v8.0.0에서 추가됐어요.
Bloom filter의 확장 계수(expansion factor)예요.
- 타입: integer
- 유효 범위: [0 .. 32768]
- 기본값: 2
bf-initial-size
Bloom filter의 초기 용량(initial capacity)이에요.
- 타입: integer
- 유효 범위: [1 .. 1048576]
- 기본값: 100
Cuckoo filter 기본 파라미터
cf-bucket-size
v8.0.0에서 추가됐어요.
각 Cuckoo filter 버킷의 항목 수예요.
- 타입: integer
- 유효 범위: [1 .. 255]
- 기본값: 2
cf-initial-size
v8.0.0에서 추가됐어요.
Cuckoo filter의 초기 용량이에요.
- 타입: integer
- 유효 범위: [2*cf-bucket-size .. 1048576]
- 기본값: 1024
cf-expansion-factor
v8.0.0에서 추가됐어요.
Cuckoo filter의 확장 계수예요.
- 타입: integer
- 유효 범위: [0 .. 32768]
- 기본값: 1
cf-max-expansions
Cuckoo filter의 최대 확장 횟수예요.
- 타입: integer
- 유효 범위: [1 .. 65535]
- 기본값: 32
cf-max-iterations
v8.0.0에서 추가됐어요.
Cuckoo filter의 최대 반복 횟수예요.
- 타입: integer
- 유효 범위: [1 .. 65535]
- 기본값: 20
모듈 로드 시 구성 파라미터 설정 (deprecated)
이 방법들은 Redis 8부터 deprecated(더 이상 권장되지 않음)예요.
로드 시점에 구성 파라미터를 설정하는 것은, 명령줄에서 서버를 시작할 때 --loadmodule 인자 뒤에 인자를 추가하거나, Redis 구성 파일의 loadmodule 지시문 뒤에 추가하는 방식으로 이루어져요.
예를 들면:
redis.conf에서:
loadmodule ./redisbloom.so [OPT VAL]...
Redis CLI에서 MODULE LOAD 명령어 사용:
127.0.0.6379> MODULE LOAD redisbloom.so [OPT VAL]...
명령줄에서:
$ redis-server --loadmodule ./redisbloom.so [OPT VAL]...