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"

위의 예에서 SETGET 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"

위의 예에서 SETGET 명령이지만 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