Redis 설치, 시작, 5 가지 데이터 구조의 기본 사용

1. redis 설치 및 시작

1. redis를 다운로드해야하는
mkdir packages
cd packages / 디렉토리를 엽니 다.
2. redis 설치 패키지
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
ls -lrt를 다운로드합니다 .
3. 설치 패키지
tar의 압축을 풉니 다. xzfv redis-5.0.3.tar.gz 
cd redis-5.0.3 /
ls -lrt
4.
make
pwd
ls -lrt 설치
5. redis 서버 시작
src / redis-server redis.conf &
6. 서비스 시작 확인 it
 PS -ef | grep redis
7. 시작 redis 클라이언트
SCR / redis-CLI
8. 사용의 간단한 예

[allen@localhost redis-5.0.3]$ src/redis-cli
127.0.0.1:6379> set allen "will win 100 million yuan this year"
OK
127.0.0.1:6379> get allen
"will win 100 million yuan this year"
127.0.0.1:6379> 

공식 웹 사이트 문서를 보는 방법 :

클라이언트 측에서 도움말 문서를 얻는 방법 :

127.0.0.1:6379> help @set

  SADD key member [member ...]
  summary: Add one or more members to a set
  since: 1.0.0

 

명령 소개 (기능 기반)

1. 단일 값 캐시.

2. 개체 캐시

이름 밸런스
앨런 200000
계산서 4000
칼린 30000
데이비드 70000

방법 1 :

 사용자 : 1 값 설정 (Json 형식 데이터)

방법 2 :

 mset 사용자 : 1 : Allen 사용자 이름 : 1 : Balance 200000

127.0.0.1:6379> mset user:1:Name Allen user:1:Balance 200000
OK
127.0.0.1:6379> mset user:2:Name Bill user:2:Balance 40000
OK
127.0.0.1:6379> mget user:1:Name
1) "Allen"
127.0.0.1:6379> mget user:1:Balance
1) "200000"

3. setNX는 분산 잠금을 구현합니다.

 NX -키가없는 경우에만 설정하십시오.

리턴 1은 설정이 성공했음을 의미하고, 리턴 0은 설정이 실패했음을 의미하며, 실행이 완료되고 키가 삭제되면 잠금이 해제됩니다.

127.0.0.1:6379> SETNX product:1001 true
(integer) 1
127.0.0.1:6379> SETNX product:1001 true
(integer) 0
127.0.0.1:6379> del product:1001
(integer) 1

4. 독서 기능을 깨닫기 위하여 incr를 사용하십시오 

127.0.0.1:6379> incr artical:readCount:1001
(integer) 1
127.0.0.1:6379> incr artical:readCount:1001
(integer) 2
127.0.0.1:6379> incr artical:readCount:1001
(integer) 3
127.0.0.1:6379> 

5. Redis 해시 공통 작업

Redis 해시 데이터 구조는 객체 스토리지, Hmset을 실현합니다.

127.0.0.1:6379> hmset user 1001:name Allen 1001:balence 1000000
OK
127.0.0.1:6379> hmset user 1002:name Sky 1002:balence 10000
OK
127.0.0.1:6379> hgetall user
1) "1001:name"
2) "Allen"
3) "1001:balence"
4) "1000000"
5) "1002:name"
6) "Sky"
7) "1002:balence"
8) "10000"
127.0.0.1:6379> hmget user 1001:name
1) "Allen"
127.0.0.1:6379> 

5.1. Redis 해시 데이터 구조는 객체 스토리지, Hset을 실현합니다.

해시는 장바구니 시나리오를 늘리는 데 사용됩니다.

1) 사용자 ID는 key-cart : 1001입니다.

2) 제품 ID를 field-8808로 사용

3) 상품의 수량을 가치 -1로

127.0.0.1:6379> hset cart:1001 8808 1
(integer) 1
127.0.0.1:6379> hincrby cart:1001 8808 1
(integer) 2
127.0.0.1:6379> hlen cart:1001
(integer) 1
127.0.0.1:6379> hget cart:1001 8808
"2"
127.0.0.1:6379> hgetall cart:1001
1) "8808"
2) "2"
127.0.0.1:6379> 

6. 데이터 구조를 얻기위한 데이터 구조 나열

6.1 스택 데이터 구조의 구현,

스택 (栈 FILO) = LPUSH + LPOP

127.0.0.1:6379> LPUSH menu "Pai HuangGua"
(integer) 1
127.0.0.1:6379> LPUSH menu "Shao Zhuti"
(integer) 2
127.0.0.1:6379> LPUSH menu "Zheng Xiongzhang"
(integer) 3
127.0.0.1:6379> LPOP menu
"Zheng Xiongzhang"
127.0.0.1:6379> LPOP menu
"Shao Zhuti"
127.0.0.1:6379> 

6.2 큐 데이터 구조의 구현 :

대기열 (대기열 FIFO) = LPUSH + RPOP

127.0.0.1:6379> LPUSH QueueMenu "Pai HuangGua"
(integer) 1
127.0.0.1:6379> LPUSH QueueMenu "Shao ZhuTi"
(integer) 2
127.0.0.1:6379> LPUSH QueueMenu "Zhen XiongZhang"
(integer) 3
127.0.0.1:6379> RPOP QueueMenu
"Pai HuangGua"
127.0.0.1:6379> RPOP QueueMenu
"Shao ZhuTi"
127.0.0.1:6379> 

6.2 블로킹 큐 데이터 구조 구현

차단 대기열 (队列 FIFO) = LPUSH + BRPOP

127.0.0.1:6379> LPUSH QueueMenu "Pai HuangGua"
(integer) 1
127.0.0.1:6379> LPUSH QueueMenu "Shao ZhuTi"
(integer) 2
127.0.0.1:6379> BRPOP QueueMenu 5
1) "QueueMenu"
2) "Pai HuangGua"
127.0.0.1:6379> BRPOP QueueMenu 5
1) "QueueMenu"
2) "Shao ZhuTi"
127.0.0.1:6379> BRPOP QueueMenu 5
(nil)
(5.10s)
127.0.0.1:6379> 

6.3 LRANGE 명령 사용

127.0.0.1:6379> LPUSH QueueMenu "Zhen XiongZhang"
(integer) 1
127.0.0.1:6379> LPUSH QueueMenu "Shao ZhuTi"
(integer) 2
127.0.0.1:6379> LPUSH QueueMenu "Pai HuangGua"
(integer) 3
127.0.0.1:6379> LPUSH QueueMenu "Chao HuaSheng"
(integer) 4
127.0.0.1:6379> LPUSH QueueMenu "Kao Ya"
(integer) 5
127.0.0.1:6379> LRange QueueMenu 2 4
1) "Pai HuangGua"
2) "Shao ZhuTi"
3) "Zhen XiongZhang"
127.0.0.1:6379> 

7. 데이터 구조 적용 시나리오 설정

7.1. 복권, 같은 직원이 여러 번 당첨 될 때마다

127.0.0.1:6379> sadd choujinag Allen
(integer) 1
127.0.0.1:6379> sadd choujinag Bill
(integer) 1
127.0.0.1:6379> sadd choujinag Fiona
(integer) 1
127.0.0.1:6379> sadd choujinag Wesley
(integer) 1
127.0.0.1:6379> sadd choujinag Alisa
(integer) 1
127.0.0.1:6379> sadd choujinag Mocha
(integer) 1
127.0.0.1:6379> srandmember choujinag 2
1) "Fiona"
2) "Bill"
127.0.0.1:6379> SMEMBERS choujinag
1) "Wesley"
2) "Mocha"
3) "Alisa"
4) "Fiona"
5) "Bill"
6) "Allen"

7.2 복권, 같은 직원은 한 번만 당첨 될 수 있습니다.

127.0.0.1:6379> SPOP choujinag 2
1) "Wesley"
2) "Fiona"
127.0.0.1:6379> SMEMBERS choujinag
1) "Mocha"
2) "Alisa"
3) "Bill"
4) "Allen"
127.0.0.1:6379> 

7.3 Set은 like 함수를 구현합니다.

좋아요-> 좋아요 취소-> 좋아요 여부 확인-> 좋아요 목록보기-> 좋아요 수보기

127.0.0.1:6379> sadd like:Message1001 Allen
(integer) 1
127.0.0.1:6379> sadd like:Message1001 Bill
(integer) 1
127.0.0.1:6379> sadd like:Message1001 Fiona
(integer) 1
127.0.0.1:6379> sadd like:Message1001 Mocha
(integer) 1
127.0.0.1:6379> srem like:Message1001 Fiona
(integer) 1
127.0.0.1:6379> SISMEMBER like:Message1001 Bill
(integer) 1
127.0.0.1:6379> SISMEMBER like:Message1001 Fiona
(integer) 0
127.0.0.1:6379> SMEMBERS like:Message1001
1) "Bill"
2) "Allen"
3) "Mocha"
127.0.0.1:6379> scard like:Message1001
(integer) 3
127.0.0.1:6379> 

7.4 작업 설정

연합-SINTER

또는 설정-SUNION

차이 세트 --SDIFF- 첫 번째 세트에서 모든 후속 세트를 뺍니다.

127.0.0.1:6379> sadd fruit1 apple banana
(integer) 2 
127.0.0.1:6379> sadd fruit2 pear berry grape apple orange
(integer) 2
127.0.0.1:6379> sadd fruit3 apple mongo
(integer) 2
127.0.0.1:6379> SINTER fruit1 fruit2
1) "apple"
127.0.0.1:6379> SUNION fruit3 fruit1
1) "banana"
2) "apple"
3) "mongo"
127.0.0.1:6379> sdiff fruit1 fruit2
1) "banana"
127.0.0.1:6379> 

전자 상거래 웹 사이트의 필터링 솔루션 :

8. 주문 된 세트 zset

zset 작업 명령


위 명령의 간단한 사용 :

127.0.0.1:6379> zadd MathScore 90 allen 80 bill 65 mocha 85 fiona
(integer) 4
127.0.0.1:6379> ZREM MathScore mocha
(integer) 1
127.0.0.1:6379> zscore MathScore mocha
(nil)
127.0.0.1:6379> zscore MathScore fiona
"85"
127.0.0.1:6379> zcard MathScore 
(integer) 3
127.0.0.1:6379> ZRANGE MathScore 1 2
1) "fiona"
2) "allen"
127.0.0.1:6379> ZRANGE MathScore 1 2 withscores
1) "fiona"
2) "85"
3) "allen"
4) "90"
127.0.0.1:6379> ZREVRANGE MathScore 0 2
1) "allen"
2) "fiona"
3) "bill"
127.0.0.1:6379> zadd EnglishScore 100 allen 80 sky 70 kevin
(integer) 3
127.0.0.1:6379> ZINCRBY MatchScore 1 fiona
"86"
127.0.0.1:6379> ZINCRBY MatchScore 1 fiona
"87"
127.0.0.1:6379> ZINCRBY MatchScore 1 fiona
"88"
127.0.0.1:6379> ZUNIONSTORE Class061Score 2 MatchScore EnglishScore
(integer) 5
127.0.0.1:6379> ZREVRANGE Class061Score 0 4 withscores
 1) "allen"
 2) "190"
 3) "fiona"
 4) "88"
 5) "sky"
 6) "80"
 7) "bill"
 8) "80"
 9) "kevin"
10) "70"

9. 기타 고급 명령, 모든 키 나열

키 *

키 앨런

127.0.0.1:6379> keys *
 1) "menu"
 2) "user:1:Balance"
 3) "user:1:Name"
 4) "QueueMenu"
 5) "fruit1"
 6) "choujinag"
 7) "EnglishScore"
 8) "artical:readCount:1001"
 9) "fruit3"
10) "Class061Score"
11) "user:2:Balance"
12) "cart:1001"
13) "like:Message1001"
14) "MatchScore"
15) "fruit2"
16) "user"
17) "user:2:Name"
18) "allen"
127.0.0.1:6379> keys allen
1) "allen"

키를 사용하여 전체 redis를 스캔하면 블록이 발생합니다.

10. 점진적 순회, 반환 된 값이 커서 0이 될 때까지 스캔합니다.

여기에서 커서는 해시 맵의 버킷 테이블 값입니다.

스캔 0 일치 사용자 * 카운트 3

127.0.0.1:6379> keys user*
1) "user:1:Balance"
2) "user:1:Name"
3) "user1"
4) "user:2:Balance"
5) "user3"
6) "user2"
7) "user"
8) "user:2:Name"
127.0.0.1:6379> scan 0 match user* count 3
1) "20"
2) 1) "user:1:Name"
127.0.0.1:6379> scan 20 match user* count 3
1) "28"
2) 1) "user:2:Balance"
127.0.0.1:6379> scan 28 match user* count 3
1) "30"
2) 1) "user1"
127.0.0.1:6379> scan 30 match user* count 3
1) "13"
2) 1) "user"
   2) "user:2:Name"
   3) "user3"
127.0.0.1:6379> scan 13 match user* count 3
1) "19"
2) 1) "user:1:Balance"
127.0.0.1:6379> scan 19 match user* count 3
1) "31"
2) 1) "user2"
127.0.0.1:6379> scan 31 match user* count 3
1) "0"
2) (empty list or set)
127.0.0.1:6379> 

 

추천

출처blog.csdn.net/pengweismile/article/details/112093565