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>