java - mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
ringa_lee
ringa_lee 2017-04-18 09:06:49
0
4
983

mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

ringa_lee
ringa_lee

ringa_lee

모든 응답(4)
洪涛

@ybak님의 답변을 바탕으로 비교적 간단하고 실용적인 해결책을 알려드리겠습니다.

Redis가 차지하는 메모리를 제한합니다. Redis는 자체 데이터 제거 전략에 따라 핫 데이터를 메모리에 로드합니다.
그러므로 20W 데이터가 차지하는 대략적인 메모리를 계산한 다음 Redis 메모리 제한을 설정합니다.

小葫芦

어떤 데이터가 문제인가요?

사용자 데이터 등. 데이터베이스에는 2천만 개의 항목이 있습니다.
활성 사용자:
redis sortSet에 넣으면 2일 이내에 로그인한 사용자(편의상 1일 이내에 활성 사용자)는 ZADD에 한 번 로그인됩니다. 해당 세트가 이미 존재하는 경우 해당 점수(로그인 시간)입니다. 덮어쓰게 됩니다. 키: 로그인:사용자, 값: 점수 타임스탬프, 값 userid. 매일 오전 3시 이전에 정렬된 데이터를 삭제하는 등의 주기적인 작업을 설정합니다. ).

가져올 때 현재 타임스탬프(int 10자리)를 가져온 다음 1일을 빼서 점수 범위에 따라 지난 24시간 동안의 활성 사용자를 구합니다.

洪涛

귀하의 질문을 보면 Redis를 캐시로 사용하면 됩니다.
캐시 무효화를 구현하는 간단한 방법 제공: LRU(최근 거의 사용되지 않는 노후화)
즉, Redis 캐시가 적중할 때마다 히트 캐시에 대한 특정 ttl(만료 시간)(특정 상황에 따라 설정, 예: 10분)
일정 시간이 지나면 핫 데이터의 ttl은 더 커지고 자동으로 만료되지 않습니다. 콜드 데이터는 기본적으로 만료됩니다. 설정된 ttl은 즉시 무효화됩니다.

黄舟

Redis 메모리 데이터 세트의 크기가 특정 크기로 증가하면 데이터 제거 전략이 구현됩니다.

redis는 6가지 데이터 제거 전략을 제공합니다.

휘발성-lru: 만료 시간이 있는 데이터 세트에서 가장 최근에 사용된 데이터를 선택하여
휘발성-ttl
휘발성-랜덤
allkeys-lru
을 제거합니다. allkeys -random
권유 없음

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿