프로젝트에서 redis 캐시의 사용에 대해 간단히 말하다

3554 단어 redis캐시

배경


Redis는 소스 기반 메모리 데이터 구조 스토리지 시스템입니다.
데이터베이스, 캐시, 메시지 중간부품으로 사용할 수 있습니다.
다양한 유형의 데이터 구조를 지원합니다.
Redis에는 복제(replication), LUA 스크립팅(Lua scripting), LRU 드라이브 이벤트(LRU eviction), 트랜잭션(transactions), 다양한 단계의 디스크 지속화(persistence)가 내장되어 있습니다.
Redis 보초(Sentinel)와 Redis 클러스터(Cluster)의 자동 파티션을 통해 고가용성(high availability)을 제공합니다.

기본 데이터 유형


문자열 (strings)
1,string의 만료 시간은 값을 재설정한 후에 삭제됩니다

127.0.0.1:6379> set hello 3OK127.0.0.1:6379> get hello"3"
127.0.0.1:6379> ttl hello(integer) -1127.0.0.1:6379> expire hello 3000
(integer) 1
127.0.0.1:6379> set hello 4OK127.0.0.1:6379> ttl hello(integer) -1
2,string 형식의 값을 설정하면 다른 형식을 덮어쓸 수 있습니다

127.0.0.1:6379> sadd settest 1,2
(integer) 1
127.0.0.1:6379> type settestset127.0.0.1:6379> set settest helloOK127.0.0.1:6379> type setteststring127.0.0.1:6379> sadd settest a,b(error) WRONGTYPE Operation against a key holding the wrong kind of value
해시
목록
Redis lists는 Linked Lists를 기반으로 구현됩니다.머리와 꼬리 조작이 매우 빠르고 검색이 비교적 느리다
집합 (sets)
지원 범위에서 찾을 수 있는 질서정연한 집합 (sorted sets)
질서정연하게 집합된 정렬은 기본적으로 사전순으로 정렬된다
bitmaps
hyperloglogs
반경 인덱스로 조회할 수 있는 지리적 공간 (geospatial)

응용 장면


string
캐시 데이터
간단하고 복잡한 데이터든 직접string 저장소로 전환할 수 있습니다.
key:active:spring2019:title value:'2019 설 이벤트'조작:set
상품 정보, 시내 정보, 활동 설정 등 일련의 변하지 않는 냉각 데이터 캐시
핫한 데이터의 캐시, 게임 순위, 백그라운드에서 1초에 한 번씩 데이터 업데이트
단순 계수
2019 설날 행사 참가자 수
key:active:spring2019:totalvalue:3045 조작:incr
기한이 지나다
한 사람이 하루에 한 번만 출석체크를 할 수 있습니다.
key:active:checkin:userId:10000:day:20190101value:출석 스탬프 조작:expire
분포식 자물쇠
아래의 코드가 엄격하지 않아서 nx를 병발할 수 있다

127.0.0.1:6379> set lockkey 1  nxOK127.0.0.1:6379> set lockkey 1  nx(nil)
list
사용자 대기열
push,pop
질서정연한 소식
push,pop
생산자와 소비자 모델을 실현하다
BRPO 및 BLPOP 액세스 차단 명령
set
목록 다시 만들기
2019 설날 행사 참가자 수
key:active:spring2019:usersvalue:10001010020 조작: 많음
태그
사용자 태그
상인 상표
설 이벤트는 모두 abcde 5개 퀘스트가 있습니다. 사용자 A는 a, b, 사용자 B는 c, d를 완성했습니다.
교집합
사용자 A, 사용자 B가 모두 수행한 작업
한데 모으다
사용자 A, 사용자 B 완료된 작업
차집
사용자 A가 아직 완료하지 않은 작업
랜덤 요소 가져오기
선물 창고 set에서 무작위로 선물을 획득
hash
동일한 리소스의 다른 속성
사용자는 이벤트 기간에 모두 다른 종류의 상품 수량을 획득하였다
key:active:spring:g'ifts:user:10010value:{'giftA':2,'giftB':5}조작: 많음
giftA에서 incr 작업을 직접 수행할 수 있습니다.
zset
차트
사용자 소비 순위, 좋아요 순위 등
key:active:spring⭐️rank value: 사용자 ID, score: 좋아요 수량 조작: 많음
점수에 따라 top 10 가져오기
사용자의 분수 조회
조회 점수 90-100 사이의 사용자
때때로 우리의 득점은 특정한 업무 값에 의해 결정되는 것이 아니라 두 가지 업무 값으로 정렬될 수 있다. 예를 들어 사용자의 실제 득점을 먼저 보고 사용자의 등급을 본다. 그러면 우리는 score를 설계할 때 소수점 이전의 값으로 득점을 표시할 수 있고 소수점 이후의 값은 등급을 표시할 수 있다. 만약에 다른 특수한 요구가 있다면 득점에 특정한 극대치를 더해서 처리할 수 있다.
주의사항
모든 키는 합리적인 실효 시간이 있어야 한다
string의 만료 시간은 값을 재설정한 후에 덮어씁니다.
string 형식의 set 작업은 형식을 덮어쓸 수 있습니다
상응하는 데이터 구조를 합리적으로 사용하다
list로 대량의 데이터를 저장하고 검색하지 마세요
키의 수량을 합리적으로 계획하다
사용자가 참가했는지 아닌지를 판단하려면 set를 사용해야 하며, 사용자마다 키를 하나씩 사용해서는 안 된다
환경 데이터 격리
업무 데이터 격리 사용자 레디스 업무 레디스 활동 레디스는 구분해야 합니다. 활동 레디스는 활동이 끝난 후에 자유롭게 정리할 수 있습니다.
파이프, 루아 스크립트와 레디스 업무를 합리적으로 사용하여 성능을 향상시킨다. 특히 스크립트에서 레디스를 사용할 때
대량의 키가 있는 Reids 온라인 시스템에서 메인 라이브러리에서 keys* 조작을 사용하지 않고 끊기지 않도록 해야 합니다
프로젝트에서 레디스 캐시 사용에 대한 간단한 설명을 드리겠습니다. 더 많은 레디스 캐시 사용 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기