-
Redis: n분 동안 키워드 랭킹? timeseries컴퓨터/JAVA 2025. 3. 15. 22:37728x90반응형
1시간 동안 메시지 수 그래프 등 기능을 만들기 위해
somekey:<id>:keywords:<timestamp> 와 같이 정렬된 집합 (ZSET)을 주로 쓰고 있었다.
문제는 문서에 따르면 small size의 ZSET은 압축된 형식 (ziplist/listpack)으로 저장하지만,
항목 개수 또는 항목 크기 제한을 초과하면 자동으로 Hashtable로 변환된다고 한다. (메모리 2배 이상 증가 가능)
그래서 TimeSeries 데이터 구조를 사용하면 빠르고 효율적으로 시간 기반 쿼리가 가능하다고 한다.
redis-stack이나 enterprise 깔면 쉬운데 일단 wsl2 환경에서 redis-server를 로컬로 돌리고 있으니
모듈을 설치해야 한다. (아니면 아래 명령어를 통해 모듈이 있나 확인)
redis-cli > MODULE LIST
GitHub - RedisTimeSeries/RedisTimeSeries: Time Series data structure for Redis
Time Series data structure for Redis. Contribute to RedisTimeSeries/RedisTimeSeries development by creating an account on GitHub.
github.com
마음 편하게 wsl 보단 docker를 이용하자.
docker run -p 6379:6379 -it --rm redis/redis-stack-server:latest
custom redis.conf는 아래처럼 간단히 쓸 수 있다.
# bind 0.0.0.0 port 6379 ############################ # 🏎️ Performance Tweaks # ############################ maxclients 10000 appendonly no save "" maxmemory 512mb maxmemory-policy allkeys-lru lazyfree-lazy-eviction yes lazyfree-lazy-expire yes lazyfree-lazy-server-del yes auto-aof-rewrite-percentage 50 auto-aof-rewrite-min-size 64mb hash-max-ziplist-entries 1024 hash-max-ziplist-value 64 zset-max-ziplist-entries 1024 zset-max-ziplist-value 128 ############################ # 🛡️ Security & Stability # ############################ requirepass 패스워드 protected-mode yes timeout 300 tcp-keepalive 60 enable-module-command yes loadmodule /opt/redis-stack/lib/redisearch.so loadmodule /opt/redis-stack/lib/rejson.so loadmodule /opt/redis-stack/lib/redistimeseries.so loadmodule /opt/redis-stack/lib/redisbloom.so loadmodule /opt/redis-stack/lib/rediscompat.so # 아래 모듈들이 있음 # libredisgears_v8_plugin.so # redisbloom.so # rediscompat..so # redissearch.so # redisgears.so # redistimeseries.so # rejson.so
728x90'컴퓨터 > JAVA' 카테고리의 다른 글
Spring: Playwright exposeFunction (유튜브 라이브 채팅 읽기) (0) 2025.03.02 멀티스레드 Phaser - flexible 동기화 장벽 (0) 2024.06.12 Spring boot: Github Action CI에 JaCoCo + CodeCov (0) 2023.12.03