Redis-퀵 가이드
Redis는 확장 가능한 고성능 웹 애플리케이션을 구축하기위한 오픈 소스, 고급 키-값 저장소 및 적절한 솔루션입니다.
Redis에는 세 가지 주요 특징이 있습니다.
Redis는 지속성을 위해서만 디스크를 사용하여 데이터베이스를 완전히 메모리에 보관합니다.
Redis는 많은 키-값 데이터 저장소와 비교할 때 비교적 풍부한 데이터 유형 집합을 가지고 있습니다.
Redis는 여러 슬레이브에 데이터를 복제 할 수 있습니다.
Redis 장점
다음은 Redis의 장점입니다.
Exceptionally fast − Redis는 매우 빠르며 초당 약 110000 SET, 초당 약 81000 GET을 수행 할 수 있습니다.
Supports rich data types− Redis는 기본적으로 목록, 집합, 정렬 된 집합 및 해시와 같이 개발자가 이미 알고있는 대부분의 데이터 유형을 지원합니다. 데이터 유형에 따라 어떤 문제를 더 잘 처리 할 수 있는지 알기 때문에 다양한 문제를 쉽게 해결할 수 있습니다.
Operations are atomic − 모든 Redis 작업은 원자 적이므로 두 클라이언트가 동시에 액세스하면 Redis 서버가 업데이트 된 값을 받게됩니다.
Multi-utility tool − Redis는 다중 유틸리티 도구이며 캐싱, 메시징 큐 (Redis는 기본적으로 게시 / 구독 지원), 웹 애플리케이션 세션, 웹과 같은 애플리케이션의 단기 데이터와 같은 다양한 사용 사례에서 사용할 수 있습니다. 페이지 히트 카운트 등
Redis와 다른 키-값 저장소 비교
Redis는 키-값 DB의 다른 진화 경로입니다. 여기서 값은 더 복잡한 데이터 유형을 포함 할 수 있으며 해당 데이터 유형에 대한 원자 적 연산이 정의됩니다.
Redis는 메모리 내 데이터베이스이지만 디스크 데이터베이스에 영구적이므로 메모리보다 클 수없는 데이터 세트의 제한으로 매우 높은 쓰기 및 읽기 속도가 달성되는 다른 절충안을 나타냅니다.
인 메모리 데이터베이스의 또 다른 장점은 복잡한 데이터 구조의 메모리 표현이 디스크의 동일한 데이터 구조에 비해 조작하기가 훨씬 더 쉽다는 것입니다. 따라서 Redis는 내부 복잡성이 거의없이 많은 작업을 수행 할 수 있습니다.
이 장에서는 Redis의 환경 설정에 대해 알아 봅니다.
Ubuntu에 Redis 설치
Ubuntu에 Redis를 설치하려면 터미널로 이동하여 다음 명령을 입력하십시오.
$sudo apt-get update $sudo apt-get install redis-server
그러면 컴퓨터에 Redis가 설치됩니다.
Redis 시작
$redis-server
Redis가 작동하는지 확인
$redis-cli
redis 프롬프트가 열립니다.
redis 127.0.0.1:6379>
위의 프롬프트에서 127.0.0.1 컴퓨터의 IP 주소이고 6379Redis 서버가 실행중인 포트입니다. 이제 다음을 입력하십시오.PING 명령.
redis 127.0.0.1:6379> ping
PONG
이것은 Redis가 컴퓨터에 성공적으로 설치되었음을 보여줍니다.
Ubuntu에 Redis Desktop Manager 설치
Ubuntu에 Redis 데스크탑 관리자를 설치하려면 다음에서 패키지를 다운로드하십시오. https://redisdesktop.com/download
다운로드 한 패키지를 열고 설치하십시오.
Redis 데스크톱 관리자는 Redis 키 및 데이터를 관리 할 수있는 UI를 제공합니다.
Redis에는 Redis의 루트 디렉토리에서 사용할 수있는 구성 파일 (redis.conf)이 있습니다. Redis에서 모든 Redis 구성을 가져오고 설정할 수 있지만CONFIG 명령.
통사론
다음은 Redis의 기본 구문입니다. CONFIG 명령.
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
예
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
모든 구성 설정을 가져 오려면 CONFIG_SETTING_NAME 대신 *를 사용하십시오.
예
redis 127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "unixsocket"
8) ""
9) "logfile"
10) ""
11) "pidfile"
12) "/var/run/redis.pid"
13) "maxmemory"
14) "0"
15) "maxmemory-samples"
16) "3"
17) "timeout"
18) "0"
19) "tcp-keepalive"
20) "0"
21) "auto-aof-rewrite-percentage"
22) "100"
23) "auto-aof-rewrite-min-size"
24) "67108864"
25) "hash-max-ziplist-entries"
26) "512"
27) "hash-max-ziplist-value"
28) "64"
29) "list-max-ziplist-entries"
30) "512"
31) "list-max-ziplist-value"
32) "64"
33) "set-max-intset-entries"
34) "512"
35) "zset-max-ziplist-entries"
36) "128"
37) "zset-max-ziplist-value"
38) "64"
39) "hll-sparse-max-bytes"
40) "3000"
41) "lua-time-limit"
42) "5000"
43) "slowlog-log-slower-than"
44) "10000"
45) "latency-monitor-threshold"
46) "0"
47) "slowlog-max-len"
48) "128"
49) "port"
50) "6379"
51) "tcp-backlog"
52) "511"
53) "databases"
54) "16"
55) "repl-ping-slave-period"
56) "10"
57) "repl-timeout"
58) "60"
59) "repl-backlog-size"
60) "1048576"
61) "repl-backlog-ttl"
62) "3600"
63) "maxclients"
64) "4064"
65) "watchdog-period"
66) "0"
67) "slave-priority"
68) "100"
69) "min-slaves-to-write"
70) "0"
71) "min-slaves-max-lag"
72) "10"
73) "hz"
74) "10"
75) "no-appendfsync-on-rewrite"
76) "no"
77) "slave-serve-stale-data"
78) "yes"
79) "slave-read-only"
80) "yes"
81) "stop-writes-on-bgsave-error"
82) "yes"
83) "daemonize"
84) "no"
85) "rdbcompression"
86) "yes"
87) "rdbchecksum"
88) "yes"
89) "activerehashing"
90) "yes"
91) "repl-disable-tcp-nodelay"
92) "no"
93) "aof-rewrite-incremental-fsync"
94) "yes"
95) "appendonly"
96) "no"
97) "dir"
98) "/home/deepak/Downloads/redis-2.8.13/src"
99) "maxmemory-policy"
100) "volatile-lru"
101) "appendfsync"
102) "everysec"
103) "save"
104) "3600 1 300 100 60 10000"
105) "loglevel"
106) "notice"
107) "client-output-buffer-limit"
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
109) "unixsocketperm"
110) "0"
111) "slaveof"
112) ""
113) "notify-keyspace-events"
114) ""
115) "bind"
116) ""
구성 편집
구성을 업데이트하려면 다음을 편집 할 수 있습니다. redis.conf 파일을 직접 작성하거나 다음을 통해 구성을 업데이트 할 수 있습니다. CONFIG set 명령.
통사론
다음은 기본 구문입니다. CONFIG SET 명령.
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
예
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
Redis는 5 가지 유형의 데이터 유형을 지원합니다.
문자열
Redis 문자열은 일련의 바이트입니다. Redis의 문자열은 바이너리 안전합니다. 즉, 특수 종료 문자에 의해 결정되지 않는 알려진 길이를가집니다. 따라서 하나의 문자열에 최대 512MB까지 저장할 수 있습니다.
예
redis 127.0.0.1:6379> SET name "tutorialspoint"
OK
redis 127.0.0.1:6379> GET name
"tutorialspoint"
위의 예에서 SET 과 GET Redis 명령입니다. name Redis에서 사용되는 키이며 tutorialspoint Redis에 저장된 문자열 값입니다.
Note − 문자열 값은 최대 512MB까지 가능합니다.
해시
Redis 해시는 키 값 쌍의 모음입니다. Redis 해시는 문자열 필드와 문자열 값 사이의 맵입니다. 따라서 개체를 나타내는 데 사용됩니다.
예
redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password
tutorialspoint points 200
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "tutorialspoint"
3) "password"
4) "tutorialspoint"
5) "points"
6) "200"
위의 예에서는 사용자의 기본 정보를 담고있는 사용자 객체를 저장하기 위해 해시 데이터 타입을 사용합니다. 여기HMSET, HGETALL Redis 용 명령이며 user − 1 열쇠입니다.
모든 해시는 최대 2 개의 32-1 개의 필드-값 쌍 (40 억 개 이상)을 저장할 수 있습니다 .
기울기
Redis 목록은 단순히 삽입 순서로 정렬 된 문자열 목록입니다. 헤드 또는 테일의 Redis 목록에 요소를 추가 할 수 있습니다.
예
redis 127.0.0.1:6379> lpush tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> lpush tutoriallist mongodb
(integer) 2
redis 127.0.0.1:6379> lpush tutoriallist rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange tutoriallist 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
목록의 최대 길이는 2 개 32-1 개 요소입니다 (4294967295, 목록 당 40 억 개 이상의 요소).
세트
Redis 세트는 정렬되지 않은 문자열 모음입니다. Redis에서는 O (1) 시간 복잡도에서 구성원의 존재를 추가, 제거 및 테스트 할 수 있습니다.
예
redis 127.0.0.1:6379> sadd tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist mongodb
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers tutoriallist
1) "rabitmq"
2) "mongodb"
3) "redis"
Note − 위의 예에서 rabitmq 두 번 추가되지만 세트의 고유 한 속성으로 인해 한 번만 추가됩니다.
세트의 멤버 수는 최대 2 32 - 1 (4294967295, 세트당 부재보다 40 억).
정렬 된 세트
Redis 정렬 세트는 반복되지 않는 문자열 모음 인 Redis 세트와 유사합니다. 차이점은 정렬 된 집합의 모든 구성원이 가장 작은 점수에서 가장 큰 점수로 정렬 된 집합을 정렬하는 데 사용되는 점수와 연결된다는 것입니다. 회원은 고유하지만 점수는 반복 될 수 있습니다.
예
redis 127.0.0.1:6379> zadd tutoriallist 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000
1) "redis"
2) "mongodb"
3) "rabitmq"
Redis 명령은 Redis 서버에서 일부 작업을 수행하는 데 사용됩니다.
Redis 서버에서 명령을 실행하려면 Redis 클라이언트가 필요합니다. Redis 클라이언트는 이전에 설치 한 Redis 패키지에서 사용할 수 있습니다.
통사론
다음은 Redis 클라이언트의 기본 구문입니다.
$redis-cli
예
다음 예제는 Redis 클라이언트를 시작하는 방법을 설명합니다.
Redis 클라이언트를 시작하려면 터미널을 열고 다음 명령을 입력하십시오. redis-cli. 그러면 로컬 서버에 연결되며 이제 모든 명령을 실행할 수 있습니다.
$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
위의 예에서는 로컬 머신에서 실행되는 Redis 서버에 연결하고 명령을 실행합니다. PING, 서버가 실행 중인지 여부를 확인합니다.
원격 서버에서 명령 실행
Redis 원격 서버에서 명령을 실행하려면 동일한 클라이언트로 서버에 연결해야합니다. redis-cli
통사론
$ redis-cli -h host -p port -a password
예
다음 예는 호스트 127.0.0.1, 포트 6379에서 실행되고 비밀번호 mypass가있는 Redis 원격 서버에 연결하는 방법을 보여줍니다.
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Redis 키 명령은 Redis에서 키를 관리하는 데 사용됩니다. 다음은 redis 키 명령을 사용하는 구문입니다.
통사론
redis 127.0.0.1:6379> COMMAND KEY_NAME
예
redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> DEL tutorialspoint
(integer) 1
위의 예에서 DEL 명령이지만 tutorialspoint열쇠입니다. 키가 삭제되면 명령의 출력은 (정수) 1이되고, 그렇지 않으면 (정수) 0이됩니다.
Redis 키 명령
다음 표에는 키와 관련된 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | DEL 키 이 명령은 키가있는 경우이를 삭제합니다. |
2 | DUMP 키 이 명령은 지정된 키에 저장된 값의 직렬화 된 버전을 반환합니다. |
삼 | EXISTS 키 이 명령은 키가 있는지 여부를 확인합니다. |
4 | 키 초 만료 지정된 시간 이후의 키 만료를 설정합니다. |
5 | EXPIREAT 키 타임 스탬프 지정된 시간 이후의 키 만료를 설정합니다. 여기서 시간은 Unix 타임 스탬프 형식입니다. |
6 | PEXPIRE 키 밀리 초 키 만료를 밀리 초 단위로 설정합니다. |
7 | PEXPIREAT 키 밀리 초-타임 스탬프 밀리 초로 지정된 Unix 타임 스탬프의 키 만료를 설정합니다. |
8 | 키 패턴 지정된 패턴과 일치하는 모든 키를 찾습니다. |
9 | MOVE 키 db 키를 다른 데이터베이스로 이동합니다. |
10 | PERSIST 키 키에서 만료를 제거합니다. |
11 | PTTL 키 키 만료의 남은 시간 (밀리 초)을 가져옵니다. |
12 | TTL 키 키 만료의 남은 시간을 가져옵니다. |
13 | 랜덤 키 Redis에서 임의의 키를 반환합니다. |
14 | RENAME 키 newkey 키 이름을 변경합니다. |
15 | RENAMENX 키 newkey 새 키가없는 경우 키 이름을 바꿉니다. |
16 | TYPE 키 키에 저장된 값의 데이터 유형을 반환합니다. |
Redis 문자열 명령은 Redis에서 문자열 값을 관리하는 데 사용됩니다. 다음은 Redis 문자열 명령을 사용하는 구문입니다.
통사론
redis 127.0.0.1:6379> COMMAND KEY_NAME
예
redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> GET tutorialspoint
"redis"
위의 예에서 SET 과 GET 명령이지만 tutorialspoint 열쇠입니다.
Redis 문자열 명령
다음 표에는 Redis에서 문자열을 관리하는 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | SET 키 값 이 명령은 지정된 키에 값을 설정합니다. |
2 | GET 키 키 값을 가져옵니다. |
삼 | GETRANGE 키 시작 종료 키에 저장된 문자열의 하위 문자열을 가져옵니다. |
4 | GETSET 키 값 키의 문자열 값을 설정하고 이전 값을 반환합니다. |
5 | GETBIT 키 오프셋 키에 저장된 문자열 값의 오프셋에있는 비트 값을 반환합니다. |
6 | MGET 키 1 [key2 ..] 주어진 모든 키의 값을 가져옵니다. |
7 | SETBIT 키 오프셋 값 키에 저장된 문자열 값의 오프셋에서 비트를 설정하거나 지 웁니다. |
8 | SETEX 키 초 값 키 만료로 값을 설정합니다. |
9 | SETNX 키 값 키가없는 경우에만 키 값을 설정합니다. |
10 | SETRANGE 키 오프셋 값 지정된 오프셋에서 시작하는 키의 문자열 부분을 덮어 씁니다. |
11 | STRLEN 키 키에 저장된 값의 길이를 가져옵니다. |
12 | MSET 키 값 [키 값 ...] 여러 키를 여러 값으로 설정 |
13 | MSETNX 키 값 [키 값 ...] 키가 하나도없는 경우에만 여러 키를 여러 값으로 설정합니다. |
14 | PSETEX 키 밀리 초 값 키의 값과 만료를 밀리 초 단위로 설정합니다. |
15 | INCR 키 키의 정수 값을 1 씩 증가시킵니다. |
16 | INCRBY 키 증분 주어진 양만큼 키의 정수 값을 증가시킵니다. |
17 | INCRBYFLOAT 키 증분 주어진 양만큼 키의 부동 소수점 값을 증가시킵니다. |
18 | DECR 키 키의 정수 값을 1 씩 감소시킵니다. |
19 | DECRBY 키 감소 주어진 숫자만큼 키의 정수 값을 감소시킵니다. |
20 | 키 값 추가 키에 값을 추가합니다. |
Redis Hashe는 문자열 필드와 문자열 값 사이의 맵입니다. 따라서 객체를 표현하는 데 완벽한 데이터 유형입니다.
Redis에서 모든 해시는 최대 40 억 개 이상의 필드 값 쌍을 저장할 수 있습니다.
예
redis 127.0.0.1:6379> HMSET tutorialspoint name "redis tutorial"
description "redis basic commands for caching" likes 20 visitors 23000
OK
redis 127.0.0.1:6379> HGETALL tutorialspoint
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"
위의 예에서는 'tutorialspoint'라는 해시에 Redis 자습서 세부 정보 (이름, 설명, 좋아요, 방문자)를 설정했습니다.
Redis 해시 명령
다음 표는 해시와 관련된 몇 가지 기본 명령을 나열합니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | HDEL 키 필드 2 [필드 2] 하나 이상의 해시 필드를 삭제합니다. |
2 | HEXISTS 키 필드 해시 필드가 있는지 여부를 결정합니다. |
삼 | HGET 키 필드 지정된 키에 저장된 해시 필드의 값을 가져옵니다. |
4 | HGETALL 키 지정된 키의 해시에 저장된 모든 필드와 값을 가져옵니다. |
5 | HINCRBY 키 필드 증가 주어진 숫자만큼 해시 필드의 정수 값을 증가시킵니다. |
6 | HINCRBYFLOAT 키 필드 증가 주어진 양만큼 해시 필드의 부동 값을 증가시킵니다. |
7 | HKEYS 키 해시의 모든 필드를 가져옵니다. |
8 | HLEN 키 해시의 필드 수를 가져옵니다. |
9 | HMGET 키 필드 1 [필드 2] 주어진 모든 해시 필드의 값을 가져옵니다. |
10 | HMSET 키 필드 1 값 1 [필드 2 값 2] 여러 해시 필드를 여러 값으로 설정 |
11 | HSET 키 필드 값 해시 필드의 문자열 값을 설정합니다. |
12 | HSETNX 키 필드 값 필드가 존재하지 않는 경우에만 해시 필드의 값을 설정합니다. |
13 | HVALS 키 해시의 모든 값을 가져옵니다. |
14 | HSCAN 키 커서 [MATCH 패턴] [COUNT 카운트] 해시 필드 및 관련 값을 점진적으로 반복합니다. |
Redis 목록은 단순히 삽입 순서로 정렬 된 문자열 목록입니다. Redis 목록의 헤드 또는 테일에 요소를 추가 할 수 있습니다.
목록의 최대 길이는 2 개 32-1 개 요소입니다 (4294967295, 목록 당 40 억 개 이상의 요소).
예
redis 127.0.0.1:6379> LPUSH tutorials redis
(integer) 1
redis 127.0.0.1:6379> LPUSH tutorials mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH tutorials mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE tutorials 0 10
1) "mysql"
2) "mongodb"
3) "redis"
위의 예에서는 명령에 의해 'tutorials'라는 Redis 목록에 세 개의 값이 삽입됩니다. LPUSH.
Redis 목록 명령
다음 표는 목록과 관련된 몇 가지 기본 명령을 나열합니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | BLPOP key1 [key2] 시간 초과 목록의 첫 번째 요소를 제거하고 가져 오거나 사용할 수있을 때까지 차단합니다. |
2 | BRPOP key1 [key2] 시간 초과 목록의 마지막 요소를 제거하고 가져 오거나 사용할 수있을 때까지 차단합니다. |
삼 | BRPOPLPUSH 소스 대상 시간 초과 목록에서 값을 꺼내서 다른 목록으로 밀어 넣고 반환합니다. 또는 사용할 수있을 때까지 차단 |
4 | LINDEX 키 인덱스 인덱스로 목록에서 요소를 가져옵니다. |
5 | LINSERT 키 BEFORE | AFTER 피벗 값 목록의 다른 요소 앞이나 뒤에 요소를 삽입합니다. |
6 | LLEN 키 목록의 길이를 가져옵니다. |
7 | LPOP 키 목록에서 첫 번째 요소를 제거하고 가져옵니다. |
8 | LPUSH 키 값 1 [값 2] 목록에 하나 또는 여러 값을 추가합니다. |
9 | LPUSHX 키 값 목록이있는 경우에만 목록 앞에 값을 추가합니다. |
10 | LRANGE 키 시작 중지 목록에서 요소 범위를 가져옵니다. |
11 | LREM 키 카운트 값 목록에서 요소를 제거합니다. |
12 | LSET 키 인덱스 값 색인으로 목록의 요소 값을 설정합니다. |
13 | LTRIM 키 시작 중지 목록을 지정된 범위로 자릅니다. |
14 | RPOP 키 목록의 마지막 요소를 제거하고 가져옵니다. |
15 | RPOPLPUSH 소스 대상 목록에서 마지막 요소를 제거하고 다른 목록에 추가 한 다음 반환합니다. |
16 | RPUSH 키 값 1 [값 2] 목록에 하나 또는 여러 값을 추가합니다. |
17 | RPUSHX 키 값 목록이 존재하는 경우에만 목록에 값을 추가합니다. |
Redis 세트는 고유 한 문자열의 순서가 지정되지 않은 컬렉션입니다. 고유함은 세트가 키의 데이터 반복을 허용하지 않음을 의미합니다.
Redis 세트에서 O (1)에 멤버의 존재를 추가, 제거 및 테스트합니다 (세트 내에 포함 된 요소 수에 관계없이 일정 시간). 목록의 최대 길이는 2 개 32-1 개 요소 (4294967295, 세트당 40 억 개 이상의 요소)입니다.
예
redis 127.0.0.1:6379> SADD tutorials redis
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mongodb
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mysql
(integer) 1
redis 127.0.0.1:6379> SADD tutorials mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS tutorials
1) "mysql"
2) "mongodb"
3) "redis"
위의 예에서는 명령에 의해 'tutorials'라는 Redis 세트에 세 개의 값이 삽입됩니다. SADD.
Redis 세트 명령
다음 표는 세트와 관련된 몇 가지 기본 명령을 나열합니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | SADD 키 멤버 1 [멤버 2] 세트에 하나 이상의 구성원을 추가합니다. |
2 | SCARD 키 세트의 구성원 수를 가져옵니다. |
삼 | SDIFF 키 1 [키 2] 여러 세트를 뺍니다. |
4 | SDIFFSTORE 대상 키 1 [key2] 여러 세트를 빼고 결과 세트를 키에 저장합니다. |
5 | SINTER 키 1 [키 2] 여러 세트와 교차 |
6 | SINTERSTORE 대상 키 1 [key2] 여러 세트를 교차하고 결과 세트를 키에 저장합니다. |
7 | SISMEMBER 핵심 멤버 주어진 값이 집합의 구성원인지 확인 |
8 | SMEMBERS 키 세트의 모든 멤버를 가져옵니다. |
9 | SMOVE 소스 대상 멤버 한 세트에서 다른 세트로 멤버를 이동합니다. |
10 | SPOP 키 집합에서 임의의 구성원을 제거하고 반환합니다. |
11 | SRANDMEMBER 키 [수] 집합에서 하나 또는 여러 개의 임의 멤버를 가져옵니다. |
12 | SREM 키 멤버 1 [멤버 2] 세트에서 하나 이상의 구성원을 제거합니다. |
13 | SUNION 키 1 [키 2] 여러 세트 추가 |
14 | SUNIONSTORE 대상 키 1 [key2] 여러 세트를 추가하고 결과 세트를 키에 저장합니다. |
15 | SSCAN 키 커서 [MATCH 패턴] [COUNT 카운트] 세트 요소를 점진적으로 반복합니다. |
Redis 정렬 세트는 세트에 저장된 값의 고유 한 기능이있는 Redis 세트와 유사합니다. 차이점은 정렬 된 집합의 모든 구성원이 가장 작은 점수에서 가장 큰 점수로 정렬 된 집합을 정렬하는 데 사용되는 점수와 연결된다는 것입니다.
Redis 정렬 된 집합에서 O (1)에 멤버가 있는지 추가, 제거 및 테스트합니다 (세트에 포함 된 요소 수에 관계없이 일정 시간). 목록의 최대 길이는 요소 2 개 32-1 개입니다 (4294967295, 세트당 요소 수 40 억 개 이상).
예
redis 127.0.0.1:6379> ZADD tutorials 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD tutorials 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD tutorials 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD tutorials 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD tutorials 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"
위의 예에서는 명령에 의해 'tutorials'라는 이름의 Redis 정렬 세트에 점수와 함께 세 개의 값이 삽입됩니다. ZADD.
Redis 정렬 세트 명령
다음 표는 정렬 된 세트와 관련된 몇 가지 기본 명령을 나열합니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | ZADD 주요 점수 1 구성원 1 [점수 2 구성원 2] 하나 이상의 구성원을 정렬 된 집합에 추가하거나 이미있는 경우 해당 점수를 업데이트합니다. |
2 | ZCARD 키 정렬 된 집합의 구성원 수를 가져옵니다. |
삼 | ZCOUNT 키 최소 최대 주어진 값 내에서 점수를 사용하여 정렬 된 집합의 구성원을 계산합니다. |
4 | ZINCRBY 키 증분 멤버 정렬 된 세트에서 멤버의 점수를 증가시킵니다. |
5 | ZINTERSTORE 대상 numkeys 키 [키 ...] 여러 정렬 된 세트를 교차하고 결과 정렬 된 세트를 새 키에 저장합니다. |
6 | ZLEXCOUNT 키 최소 최대 주어진 사전 식 범위 사이에서 정렬 된 집합의 구성원 수를 계산합니다. |
7 | ZRANGE 키 시작 중지 [WITHSCORES] 인덱스별로 정렬 된 집합의 멤버 범위를 반환합니다. |
8 | ZRANGEBYLEX 키 최소값 [LIMIT 오프셋 수] 사전 식 범위를 기준으로 정렬 된 집합의 멤버 범위를 반환합니다. |
9 | ZRANGEBYSCORE 키 최소값 [WITHSCORES] [LIMIT] 점수별로 정렬 된 집합의 구성원 범위를 반환합니다. |
10 | ZRANK 핵심 멤버 정렬 된 집합에서 멤버의 인덱스를 결정합니다. |
11 | ZREM 핵심 멤버 [멤버 ...] 정렬 된 집합에서 하나 이상의 구성원을 제거합니다. |
12 | ZREMRANGEBYLEX 키 최소 최대 지정된 사전 식 범위 사이의 정렬 된 집합에서 모든 구성원을 제거합니다. |
13 | ZREMRANGEBYRANK 키 시작 중지 지정된 인덱스 내에서 정렬 된 집합의 모든 멤버를 제거합니다. |
14 | ZREMRANGEBYSCORE 키 최소 최대 지정된 점수 내에서 정렬 된 집합의 모든 구성원을 제거합니다. |
15 | ZREVRANGE 키 시작 중지 [WITHSCORES] 점수가 높은 순서에서 낮은 순서로 정렬 된 일련의 멤버를 인덱스별로 반환합니다. |
16 | ZREVRANGEBYSCORE 키 최대 최소 [WITHSCORES] 점수를 기준으로 정렬 된 집합의 멤버 범위를 높은 순서에서 낮은 순서로 반환합니다. |
17 | ZREVRANK 핵심 멤버 점수가 높은 순서에서 낮은 순서로 정렬 된 집합에서 멤버의 인덱스를 결정합니다. |
18 | ZSCORE 핵심 멤버 정렬 된 집합에서 지정된 멤버와 관련된 점수를 가져옵니다. |
19 | ZUNIONSTORE 대상 numkeys 키 [키 ...] 여러 정렬 세트를 추가하고 결과 정렬 세트를 새 키에 저장합니다. |
20 | ZSCAN 키 커서 [MATCH 패턴] [COUNT 카운트] 정렬 된 세트 요소 및 관련 점수를 점진적으로 반복합니다. |
Redis HyperLogLog는 일정하고 적은 양의 메모리를 사용하여 집합의 고유 요소 수에 대한 근사치를 제공하기 위해 무작위 화를 사용하는 알고리즘입니다.
HyperLogLog는 0.81 %의 표준 오류와 함께 키당 약 12KB의 매우 적은 양의 메모리를 사용하더라도 세트의 카디널리티에 대한 매우 좋은 근사치를 제공합니다. 2 64 개 항목에 접근하지 않는 한 셀 수있는 항목 수에는 제한이 없습니다 .
예
다음 예제는 Redis HyperLogLog의 작동 방식을 설명합니다.
redis 127.0.0.1:6379> PFADD tutorials "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD tutorials "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> PFADD tutorials "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT tutorials
(integer) 3
Redis HyperLogLog 명령
다음 표에는 Redis HyperLogLog와 관련된 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | PFADD 키 요소 [요소 ...] 지정된 HyperLogLog에 지정된 요소를 추가합니다. |
2 | PFCOUNT 키 [키 ...] 키에서 HyperLogLog가 관찰 한 집합의 대략적인 카디널리티를 반환합니다. |
삼 | PFMERGE destkey sourcekey [sourcekey ...] N 개의 서로 다른 HyperLogLog를 하나의 HyperLogLog로 병합합니다. |
Redis Pub / Sub는 수신자 (구독자)가 메시지를받는 동안 발신자 (게시자라고하는 redis 용어로)가 메시지를 보내는 메시징 시스템을 구현합니다. 메시지가 전송되는 링크가 호출됩니다.channel.
Redis에서 클라이언트는 여러 채널을 구독 할 수 있습니다.
예
다음 예제는 게시 구독자 개념이 작동하는 방식을 설명합니다. 다음 예에서 한 클라이언트는 'redisChat'이라는 채널을 구독합니다.
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
이제 두 클라이언트가 'redisChat'이라는 동일한 채널에 메시지를 게시하고 있으며 위의 구독 클라이언트가 메시지를 받고 있습니다.
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 1
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis by tutorials point"
(integer) 1
1) "message"
2) "redisChat"
3) "Redis is a great caching technique"
1) "message"
2) "redisChat"
3) "Learn redis by tutorials point"
Redis PubSub 명령
다음 표에는 Redis Pub / Sub와 관련된 몇 가지 기본 명령어가 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | PSUBSCRIBE 패턴 [패턴 ...] 주어진 패턴과 일치하는 채널을 구독합니다. |
2 | PUBSUB 부속 명령 [인수 [인수 ...]] Pub / Sub 시스템의 상태를 알려줍니다. 예를 들어, 서버에서 어떤 클라이언트가 활성 상태인지. |
삼 | PUBLISH 채널 메시지 채널에 메시지를 게시합니다. |
4 | PUNSUBSCRIBE [패턴 [패턴 ...]] 주어진 패턴과 일치하는 채널에 게시 된 메시지 수신을 중지합니다. |
5 | SUBSCRIBE 채널 [채널 ...] 주어진 채널에 게시 된 메시지를 수신합니다. |
6 | UNSUBSCRIBE [채널 [채널 ...]] 지정된 채널에 게시 된 메시지 수신을 중지합니다. |
Redis 트랜잭션을 사용하면 단일 단계에서 명령 그룹을 실행할 수 있습니다. 다음은 트랜잭션의 두 가지 속성입니다.
트랜잭션의 모든 명령은 단일 격리 작업으로 순차적으로 실행됩니다. Redis 트랜잭션 실행 중에는 다른 클라이언트에서 발행 한 요청을 처리 할 수 없습니다.
Redis 트랜잭션도 원자 적입니다. 원자는 모든 명령이 처리되거나 전혀 처리되지 않음을 의미합니다.
견본
Redis 트랜잭션은 명령에 의해 시작됩니다. MULTI 그런 다음 트랜잭션에서 실행해야하는 명령 목록을 전달해야합니다. 그 후에 전체 트랜잭션이 EXEC 명령.
redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
예
다음 예제는 Redis 트랜잭션을 시작하고 실행하는 방법을 설명합니다.
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET tutorial redis
QUEUED
redis 127.0.0.1:6379> GET tutorial
QUEUED
redis 127.0.0.1:6379> INCR visitors
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "redis"
3) (integer) 1
Redis 트랜잭션 명령
다음 표는 Redis 트랜잭션과 관련된 몇 가지 기본 명령을 보여줍니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | 포기 MULTI 이후에 실행 된 모든 명령을 버립니다. |
2 | EXEC MULTI 이후에 발행 된 모든 명령을 실행합니다. |
삼 | 다중 트랜잭션 블록의 시작을 표시합니다. |
4 | 언 워치 감시 된 모든 키를 잊어 버림 |
5 | WATCH 키 [키 ...] MULTI / EXEC 블록의 실행을 결정하기 위해 주어진 키를 감시합니다. |
Redis 스크립팅은 Lua 인터프리터를 사용하여 스크립트를 평가하는 데 사용됩니다. 버전 2.6.0부터 Redis에 내장되어 있습니다. 스크립팅에 사용되는 명령은 다음과 같습니다.EVAL 명령.
통사론
다음은 기본 구문입니다. EVAL 명령.
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
예
다음 예제는 Redis 스크립팅이 작동하는 방식을 설명합니다.
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1
key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis 스크립팅 명령
다음 표에는 Redis 스크립팅과 관련된 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | EVAL 스크립트 numkeys 키 [key ...] arg [arg ...] Lua 스크립트를 실행합니다. |
2 | EVALSHA sha1 numkeys 키 [key ...] arg [arg ...] Lua 스크립트를 실행합니다. |
삼 | SCRIPT EXISTS 스크립트 [스크립트 ...] 스크립트 캐시에 스크립트가 있는지 확인합니다. |
4 | 스크립트 플러시 스크립트 캐시에서 모든 스크립트를 제거합니다. |
5 | 스크립트 킬 현재 실행중인 스크립트를 종료합니다. |
6 | SCRIPT LOAD 스크립트 지정된 Lua 스크립트를 스크립트 캐시로로드합니다. |
Redis 연결 명령은 기본적으로 Redis 서버와의 클라이언트 연결을 관리하는 데 사용됩니다.
예
다음 예제는 클라이언트가 Redis 서버에 자신을 인증하고 서버가 실행 중인지 여부를 확인하는 방법을 설명합니다.
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Redis 연결 명령
다음 표에는 Redis 연결과 관련된 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | AUTH 비밀번호 주어진 암호로 서버에 인증합니다. |
2 | ECHO 메시지 주어진 문자열을 인쇄합니다 |
삼 | 핑 서버가 실행 중인지 확인합니다. |
4 | 떠나다 현재 연결을 닫습니다. |
5 | 인덱스 선택 현재 연결에 대해 선택한 데이터베이스를 변경합니다. |
Redis 서버 명령은 기본적으로 Redis 서버를 관리하는 데 사용됩니다.
예
다음 예는 서버에 대한 모든 통계 및 정보를 얻는 방법을 설명합니다.
redis 127.0.0.1:6379> INFO
# Server
redis_version:2.8.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:c2238b38b1edb0e2
redis_mode:standalone
os:Linux 3.5.0-48-generic x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.7.2
process_id:3856
run_id:0e61abd297771de3fe812a3c21027732ac9f41fe
tcp_port:6379
uptime_in_seconds:11554
uptime_in_days:0 hz:10
lru_clock:16651447
config_file:
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:589016
used_memory_human:575.21K
used_memory_rss:2461696
used_memory_peak:667312
used_memory_peak_human:651.67K
used_memory_lua:33792
mem_fragmentation_ratio:4.18
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1409158561
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:24
total_commands_processed:294
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:41
keyspace_misses:82
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:264
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:10.49
used_cpu_user:4.96
used_cpu_sys_children:0.00
used_cpu_user_children:0.01
# Keyspace
db0:keys = 94,expires = 1,avg_ttl = 41638810
db1:keys = 1,expires = 0,avg_ttl = 0
db3:keys = 1,expires = 0,avg_ttl = 0
Redis 서버 명령
다음 표에는 Redis 서버와 관련된 몇 가지 기본 명령이 나열되어 있습니다.
Sr. 아니요 | 명령 및 설명 |
---|---|
1 | BGREWRITEAOF 추가 전용 파일을 비동기 적으로 다시 작성합니다. |
2 | BGSAVE 데이터 세트를 디스크에 비동기 적으로 저장합니다. |
삼 | CLIENT KILL [ip : port] [ID client-id] 클라이언트 연결을 끊습니다. |
4 | 클라이언트 목록 서버에 대한 클라이언트 연결 목록을 가져옵니다. |
5 | 클라이언트 GETNAME 현재 연결의 이름을 가져옵니다. |
6 | CLIENT PAUSE 제한 시간 지정된 시간 동안 클라이언트의 명령 처리를 중지합니다. |
7 | CLIENT SETNAME 연결 이름 현재 연결 이름을 설정합니다. |
8 | 클러스터 슬롯 클러스터 슬롯 대 노드 매핑의 배열을 가져옵니다. |
9 | 명령 Redis 명령 세부 정보의 배열을 가져옵니다. |
10 | 명령 수 총 Redis 명령 수를 가져옵니다. |
11 | 명령 GETKEYS 전체 Redis 명령이 주어진 키를 추출합니다. |
12 | BGSAVE 데이터 세트를 디스크에 비동기 적으로 저장합니다. |
13 | 명령 정보 명령 이름 [명령 이름 ...] 특정 Redis 명령 세부 정보의 배열을 가져옵니다. |
14 | CONFIG GET 매개 변수 구성 매개 변수의 값을 가져옵니다. |
15 | 다시 쓰기 구성 메모리 내 구성으로 구성 파일을 다시 작성합니다. |
16 | CONFIG SET 매개 변수 값 구성 매개 변수를 주어진 값으로 설정합니다. |
17 | RESETSTAT 구성 INFO에서 반환 한 통계를 재설정합니다. |
18 | DBSIZE 선택한 데이터베이스의 키 수를 반환합니다. |
19 | DEBUG OBJECT 키 키에 대한 디버깅 정보를 가져옵니다. |
20 | 디버그 SEGFAULT 서버 충돌을 일으킴 |
21 | FLUSHALL 모든 데이터베이스에서 모든 키를 제거합니다. |
22 | FLUSHDB 현재 데이터베이스에서 모든 키를 제거합니다. |
23 | 정보 [섹션] 서버에 대한 정보 및 통계를 가져옵니다. |
24 | 마지막 저장 디스크에 마지막으로 성공한 저장의 UNIX 타임 스탬프를 가져옵니다. |
25 | 감시 장치 서버에서 수신 한 모든 요청을 실시간으로 수신합니다. |
26 | 역할 복제 컨텍스트에서 인스턴스의 역할을 반환합니다. |
27 | 저장 데이터 세트를 디스크에 동기식으로 저장 |
28 | 종료 [NOSAVE] [SAVE] 데이터 세트를 디스크에 동기식으로 저장 한 다음 서버를 종료합니다. |
29 | SLAVEOF 호스트 포트 서버를 다른 인스턴스의 슬레이브로 만들거나 마스터로 승격 |
30 | SLOWLOG 부속 명령 [인수] Redis 느린 쿼리 로그를 관리합니다. |
31 | 동조 복제에 사용되는 명령 |
32 | 시각 현재 서버 시간을 반환합니다. |
Redis SAVE 명령은 현재 Redis 데이터베이스의 백업을 생성하는 데 사용됩니다.
통사론
다음은 redis의 기본 구문입니다. SAVE 명령.
127.0.0.1:6379> SAVE
예
다음 예제는 현재 데이터베이스의 백업을 만듭니다.
127.0.0.1:6379> SAVE
OK
이 명령은 dump.rdb Redis 디렉터리의 파일.
Redis 데이터 복원
Redis 데이터를 복원하려면 Redis 백업 파일 (dump.rdb)을 Redis 디렉터리로 이동하고 서버를 시작합니다. Redis 디렉토리를 얻으려면 다음을 사용하십시오.CONFIG Redis의 명령은 아래와 같습니다.
127.0.0.1:6379> CONFIG get dir
1) "dir"
2) "/user/tutorialspoint/redis-2.8.13/src"
위 명령의 출력에서 /user/tutorialspoint/redis-2.8.13/src Redis 서버가 설치된 디렉토리입니다.
Bgsave
Redis 백업을 생성하려면 대체 명령 BGSAVE is also available. This command will start the backup process and run this in the background.
Example
127.0.0.1:6379> BGSAVE
Background saving started
Redis database can be secured, such that any client making a connection needs to authenticate before executing a command. To secure Redis, you need to set the password in the config file.
Example
Following example shows the steps to secure your Redis instance.
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
By default, this property is blank, which means no password is set for this instance. You can change this property by executing the following command.
127.0.0.1:6379> CONFIG set requirepass "tutorialspoint"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "tutorialspoint"
After setting the password, if any client runs the command without authentication, then (error) NOAUTH Authentication required. error will return. Hence, the client needs to use AUTH command to authenticate himself.
Syntax
Following is the basic syntax of AUTH command.
127.0.0.1:6379> AUTH password
Example
127.0.0.1:6379> AUTH "tutorialspoint"
OK
127.0.0.1:6379> SET mykey "Test value"
OK
127.0.0.1:6379> GET mykey
"Test value"
Redis benchmark is the utility to check the performance of Redis by running n commands simultaneously.
Syntax
Following is the basic syntax of Redis benchmark.
redis-benchmark [option] [option value]
Example
Following example checks Redis by calling 100000 commands.
redis-benchmark -n 100000
PING_INLINE: 141043.72 requests per second
PING_BULK: 142857.14 requests per second
SET: 141442.72 requests per second
GET: 145348.83 requests per second
INCR: 137362.64 requests per second
LPUSH: 145348.83 requests per second
LPOP: 146198.83 requests per second
SADD: 146198.83 requests per second
SPOP: 149253.73 requests per second
LPUSH (needed to benchmark LRANGE): 148588.42 requests per second
LRANGE_100 (first 100 elements): 58411.21 requests per second
LRANGE_300 (first 300 elements): 21195.42 requests per second
LRANGE_500 (first 450 elements): 14539.11 requests per second
LRANGE_600 (first 600 elements): 10504.20 requests per second
MSET (10 keys): 93283.58 requests per second
Following is a list of available options in Redis benchmark.
Sr.No | Option | Description | Default Value |
---|---|---|---|
1 | -h | Specifies server host name | 127.0.0.1 |
2 | -p | Specifies server port | 6379 |
3 | -s | Specifies server socket | |
4 | -c | Specifies the number of parallel connections | 50 |
5 | -n | Specifies the total number of requests | 10000 |
6 | -d | Specifies data size of SET/GET value in bytes | 2 |
7 | -k | 1=keep alive, 0=reconnect | 1 |
8 | -r | Use random keys for SET/GET/INCR, random values for SADD | |
9 | -p | Pipeline <numreq> requests | 1 |
10 | -h | Specifies server host name | |
11 | -q | Forces Quiet to Redis. Just shows query/sec values | |
12 | --csv | Output in CSV format | |
13 | -l | Generates loop, Run the tests forever | |
14 | -t | Only runs the comma-separated list of tests | |
15 | -I | Idle mode. Just opens N idle connections and wait |
Example
Following example shows the multiple usage options in Redis benchmark utility.
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
SET: 146198.83 requests per second
LPUSH: 145560.41 requests per second
Redis accepts clients’ connections on the configured listening TCP port and on the Unix socket, if enabled. When a new client connection is accepted, the following operations are performed −
The client socket is put in non-blocking state since Redis uses multiplexing and non-blocking I/O.
The TCP_NODELAY option is set in order to ensure that we don't have delays in our connection.
A readable file event is created so that Redis is able to collect the client queries as soon as new data is available to be read on the socket.
Maximum Number of Clients
In Redis config (redis.conf), there is a property called maxclients, which describes the maximum number of clients that can connect to Redis.
Following is the basic syntax of command.
config get maxclients
1) "maxclients"
2) "10000"
By default, this property is set to 10000 (depending upon the maximum number of file descriptors limit of OS), although you can change this property.
Example
In the following example, we have set the maximum number of clients to 100000, while starting the server.
redis-server --maxclients 100000
Client Commands
Sr.No | Command | Description |
---|---|---|
1 | CLIENT LIST | Returns the list of clients connected to Redis server |
2 | CLIENT SETNAME | Assigns a name to the current connection |
3 | CLIENT GETNAME | Returns the name of the current connection as set by CLIENT SETNAME |
4 | CLIENT PAUSE | This is a connections control command able to suspend all the Redis clients for the specified amount of time (in milliseconds) |
5 | CLIENT KILL | This command closes a given client connection. |
Redis is a TCP server and supports request/response protocol. In Redis, a request is accomplished with the following steps −
The client sends a query to the server, and reads from the socket, usually in a blocking way, for the server response.
The server processes the command and sends the response back to the client.
Meaning of Pipelining
The basic meaning of pipelining is, the client can send multiple requests to the server without waiting for the replies at all, and finally reads the replies in a single step.
예
Redis 파이프 라이닝을 확인하려면 Redis 인스턴스를 시작하고 터미널에 다음 명령을 입력하면됩니다.
$(echo -en "PING\r\n SET tutorial redis\r\nGET tutorial\r\nINCR
visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379
+PONG
+OK
redis
:1
:2
:3
위의 예에서는 다음을 사용하여 Redis 연결을 확인합니다. PING명령. 다음과 같은 문자열을 설정했습니다.tutorial 가치있는 redis. 나중에 해당 키 값을 얻고 방문자 수를 세 번 증가시킵니다. 결과적으로 모든 명령이 Redis에 한 번 제출되고 Redis는 단일 단계에서 모든 명령의 출력을 제공함을 알 수 있습니다.
파이프 라이닝의 이점
이 기술의 장점은 프로토콜 성능이 크게 향상된다는 것입니다. 파이프 라이닝을 통해 얻은 속도는 로컬 호스트에 대한 연결의 경우 5 배에서 느린 인터넷 연결의 경우 최소 100 배까지 다양합니다.
파티셔닝은 모든 인스턴스가 키의 하위 집합 만 포함하도록 데이터를 여러 Redis 인스턴스로 분할하는 프로세스입니다.
파티셔닝의 이점
많은 컴퓨터의 메모리 합계를 사용하여 훨씬 더 큰 데이터베이스를 허용합니다. 파티션을 나누지 않으면 단일 컴퓨터가 지원할 수있는 메모리 양으로 제한됩니다.
계산 능력을 다중 코어 및 다중 컴퓨터로 확장하고 네트워크 대역폭을 다중 컴퓨터 및 네트워크 어댑터로 확장 할 수 있습니다.
파티셔닝의 단점
여러 키와 관련된 작업은 일반적으로 지원되지 않습니다. 예를 들어, 서로 다른 Redis 인스턴스에 매핑 된 키에 저장되어있는 경우 두 세트 간의 교차를 수행 할 수 없습니다.
여러 키를 포함하는 Redis 트랜잭션은 사용할 수 없습니다.
분할 단위가 핵심이므로 매우 큰 정렬 된 집합과 같이 하나의 거대한 키로 데이터 집합을 분할 할 수 없습니다.
파티셔닝을 사용하면 데이터 처리가 더 복잡해집니다. 예를 들어 여러 RDB / AOF 파일을 처리해야하고 데이터 백업을 가져 오려면 여러 인스턴스 및 호스트에서 지속성 파일을 집계해야합니다.
용량 추가 및 제거는 복잡 할 수 있습니다. 예를 들어, Redis Cluster는 런타임에 노드를 추가 및 제거하는 기능을 통해 대부분 투명한 데이터 재조정을 지원합니다. 그러나 클라이언트 측 파티셔닝 및 프록시와 같은 다른 시스템은이 기능을 지원하지 않습니다. 라는 기술Presharding 이와 관련하여 도움이됩니다.
분할 유형
Redis에는 두 가지 유형의 파티셔닝이 있습니다. 4 개의 Redis 인스턴스 (R0, R1, R2, R3)와 user : 1, user : 2, ... 등과 같은 사용자를 나타내는 많은 키가 있다고 가정합니다.
범위 분할
범위 분할은 개체 범위를 특정 Redis 인스턴스로 매핑하여 수행됩니다. 이 예에서 ID 0부터 ID 10000까지의 사용자는 인스턴스 R0으로 이동하고 ID 10001부터 ID 20000까지의 사용자는 R1 인스턴스로 이동하는 식으로 진행됩니다.
해시 분할
이러한 유형의 분할에서는 해시 함수 (예 : 모듈러스 함수)를 사용하여 키를 숫자로 변환 한 다음 데이터를 서로 다른 Redis 인스턴스에 저장합니다.
Java 프로그램에서 Redis 사용을 시작하기 전에 Redis Java 드라이버와 Java가 시스템에 설정되어 있는지 확인해야합니다. 컴퓨터에 Java 설치를위한 Java 자습서를 확인할 수 있습니다.
설치
이제 Redis Java 드라이버를 설정하는 방법을 살펴 보겠습니다.
경로에서 항아리를 다운로드해야합니다. Download jedis.jar. 최신 릴리스를 다운로드하십시오.
다음을 포함해야합니다. jedis.jar 귀하의 클래스 경로에.
Redis 서버에 연결
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//Connecting to Redis server on localhost
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//check whether server is running or not
System.out.println("Server is running: "+jedis.ping());
}
}
이제 위의 프로그램을 컴파일하고 실행하여 Redis 서버와의 연결을 테스트 해 보겠습니다. 요구 사항에 따라 경로를 변경할 수 있습니다. 우리는 현재 버전의jedis.jar 현재 경로에서 사용할 수 있습니다.
$javac RedisJava.java
$java RedisJava
Connection to server sucessfully
Server is running: PONG
Redis Java 문자열 예
import redis.clients.jedis.Jedis;
public class RedisStringJava {
public static void main(String[] args) {
//Connecting to Redis server on localhost
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//set the data in redis string
jedis.set("tutorial-name", "Redis tutorial");
// Get the stored data and print it
System.out.println("Stored string in redis:: "+ jedis.get("tutorialname"));
}
}
이제 위의 프로그램을 컴파일하고 실행 해 보겠습니다.
$javac RedisStringJava.java
$java RedisStringJava
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Redis Java 목록 예
import redis.clients.jedis.Jedis;
public class RedisListJava {
public static void main(String[] args) {
//Connecting to Redis server on localhost
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//store data in redis list
jedis.lpush("tutorial-list", "Redis");
jedis.lpush("tutorial-list", "Mongodb");
jedis.lpush("tutorial-list", "Mysql");
// Get the stored data and print it
List<String> list = jedis.lrange("tutorial-list", 0 ,5);
for(int i = 0; i<list.size(); i++) {
System.out.println("Stored string in redis:: "+list.get(i));
}
}
}
이제 위의 프로그램을 컴파일하고 실행 해 보겠습니다.
$javac RedisListJava.java
$java RedisListJava
Connection to server sucessfully
Stored string in redis:: Redis
Stored string in redis:: Mongodb
Stored string in redis:: Mysql
Redis Java 키 예
import redis.clients.jedis.Jedis;
public class RedisKeyJava {
public static void main(String[] args) {
//Connecting to Redis server on localhost
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//store data in redis list
// Get the stored data and print it
List<String> list = jedis.keys("*");
for(int i = 0; i<list.size(); i++) {
System.out.println("List of stored keys:: "+list.get(i));
}
}
}
이제 위의 프로그램을 컴파일하고 실행 해 보겠습니다.
$javac RedisKeyJava.java
$java RedisKeyJava
Connection to server sucessfully
List of stored keys:: tutorial-name
List of stored keys:: tutorial-list
PHP 프로그램에서 Redis를 사용하기 전에 시스템에 Redis PHP 드라이버와 PHP가 설정되어 있는지 확인해야합니다. 컴퓨터에 PHP 설치를위한 PHP 튜토리얼을 확인할 수 있습니다.
설치
이제 Redis PHP 드라이버를 설정하는 방법을 살펴 보겠습니다.
github 저장소에서 phpredis를 다운로드해야합니다. https://github.com/nicolasff/phpredis. 다운로드가 완료되면 phpredis 디렉토리에 파일 압축을 풉니 다. Ubuntu에서 다음 확장을 설치하십시오.
cd phpredis
sudo phpize
sudo ./configure
sudo make
sudo make install
이제“modules”폴더의 내용을 PHP 확장 디렉터리에 복사하여 붙여넣고 다음 줄을 추가합니다. php.ini.
extension = redis.so
이제 Redis PHP 설치가 완료되었습니다.
Redis 서버에 연결
<?php
//Connecting to Redis server on localhost
$redis = new Redis();
$redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //check whether server is running or not echo "Server is running: ".$redis->ping();
?>
프로그램이 실행되면 다음과 같은 결과가 나옵니다.
Connection to server sucessfully
Server is running: PONG
Redis PHP 문자열 예제
<?php
//Connecting to Redis server on localhost
$redis = new Redis(); $redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//set the data in redis string
$redis->set("tutorial-name", "Redis tutorial"); // Get the stored data and print it echo "Stored string in redis:: " .$redis→get("tutorial-name");
?>
위 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Redis PHP 목록 예제
<?php
//Connecting to Redis server on localhost
$redis = new Redis(); $redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//store data in redis list
$redis->lpush("tutorial-list", "Redis"); $redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql"); // Get the stored data and print it $arList = $redis->lrange("tutorial-list", 0 ,5); echo "Stored string in redis:: "; print_r($arList);
?>
위 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
Redis PHP 키 예
<?php
//Connecting to Redis server on localhost
$redis = new Redis(); $redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
// Get the stored keys and print it
$arList = $redis->keys("*");
echo "Stored keys in redis:: "
print_r($arList);
?>
프로그램이 실행되면 다음과 같은 결과가 나옵니다.
Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list