Redis - Hướng dẫn nhanh
Redis là một mã nguồn mở, kho lưu trữ khóa-giá trị nâng cao và là giải pháp phù hợp để xây dựng các ứng dụng web có hiệu suất cao, có thể mở rộng.
Redis có ba đặc điểm chính khiến nó trở nên khác biệt.
Redis giữ cơ sở dữ liệu của nó hoàn toàn trong bộ nhớ, chỉ sử dụng đĩa để lưu trữ lâu dài.
Redis có một tập hợp các kiểu dữ liệu tương đối phong phú khi so sánh với nhiều kho dữ liệu khóa-giá trị.
Redis có thể sao chép dữ liệu tới bất kỳ số lượng nô lệ nào.
Ưu điểm của Redis
Sau đây là những lợi thế nhất định của Redis.
Exceptionally fast - Redis rất nhanh và có thể thực hiện khoảng 110000 SET mỗi giây, khoảng 81000 GET mỗi giây.
Supports rich data types- Redis nguyên bản hỗ trợ hầu hết các kiểu dữ liệu mà các nhà phát triển đã biết, chẳng hạn như danh sách, tập hợp, tập hợp được sắp xếp và băm. Điều này giúp dễ dàng giải quyết nhiều vấn đề vì chúng ta biết vấn đề nào có thể được xử lý tốt hơn bằng kiểu dữ liệu nào.
Operations are atomic - Tất cả các hoạt động của Redis là nguyên tử, điều này đảm bảo rằng nếu hai máy khách truy cập đồng thời, máy chủ Redis sẽ nhận được giá trị cập nhật.
Multi-utility tool - Redis là một công cụ đa tiện ích và có thể được sử dụng trong một số trường hợp sử dụng như bộ nhớ đệm, hàng đợi nhắn tin (Redis nguyên bản hỗ trợ Xuất bản / Đăng ký), bất kỳ dữ liệu ngắn hạn nào trong ứng dụng của bạn, chẳng hạn như phiên ứng dụng web, web số lần truy cập trang, v.v.
Redis so với các cửa hàng khóa giá trị khác
Redis là một con đường tiến hóa khác trong DB khóa-giá trị, nơi các giá trị có thể chứa các kiểu dữ liệu phức tạp hơn, với các phép toán nguyên tử được xác định trên các kiểu dữ liệu đó.
Redis là một cơ sở dữ liệu trong bộ nhớ nhưng liên tục trên cơ sở dữ liệu đĩa, do đó nó thể hiện một sự đánh đổi khác khi đạt được tốc độ ghi và đọc rất cao với giới hạn là tập dữ liệu không thể lớn hơn bộ nhớ.
Một ưu điểm khác của cơ sở dữ liệu trong bộ nhớ là việc biểu diễn bộ nhớ của các cấu trúc dữ liệu phức tạp được thao tác đơn giản hơn nhiều so với cùng một cấu trúc dữ liệu trên đĩa. Do đó, Redis có thể làm được nhiều việc với ít phức tạp bên trong.
Trong chương này, bạn sẽ tìm hiểu về thiết lập môi trường cho Redis.
Cài đặt Redis trên Ubuntu
Để cài đặt Redis trên Ubuntu, hãy chuyển đến terminal và nhập các lệnh sau:
$sudo apt-get update $sudo apt-get install redis-server
Thao tác này sẽ cài đặt Redis trên máy của bạn.
Khởi động Redis
$redis-server
Kiểm tra xem Redis có hoạt động không
$redis-cli
Thao tác này sẽ mở ra lời nhắc redis.
redis 127.0.0.1:6379>
Trong lời nhắc ở trên, 127.0.0.1 là địa chỉ IP máy của bạn và 6379là cổng mà máy chủ Redis đang chạy. Bây giờ gõ như sauPING chỉ huy.
redis 127.0.0.1:6379> ping
PONG
Điều này cho thấy rằng Redis đã được cài đặt thành công trên máy của bạn.
Cài đặt Redis Desktop Manager trên Ubuntu
Để cài đặt trình quản lý máy tính để bàn Redis trên Ubuntu, chỉ cần tải xuống gói từ https://redisdesktop.com/download
Mở gói đã tải xuống và cài đặt nó.
Trình quản lý máy tính để bàn Redis sẽ cung cấp cho bạn giao diện người dùng để quản lý dữ liệu và khóa Redis của bạn.
Trong Redis, có một tệp cấu hình (redis.conf) có sẵn tại thư mục gốc của Redis. Mặc dù bạn có thể lấy và đặt tất cả các cấu hình của Redis bởi RedisCONFIG chỉ huy.
Cú pháp
Sau đây là cú pháp cơ bản của Redis CONFIG chỉ huy.
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
Thí dụ
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
Để nhận tất cả cài đặt cấu hình, hãy sử dụng * thay cho CONFIG_SETTING_NAME
Thí dụ
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) ""
Chỉnh sửa cấu hình
Để cập nhật cấu hình, bạn có thể chỉnh sửa redis.conf trực tiếp hoặc bạn có thể cập nhật cấu hình qua CONFIG set chỉ huy.
Cú pháp
Sau đây là cú pháp cơ bản của CONFIG SET chỉ huy.
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
Thí dụ
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 hỗ trợ 5 loại kiểu dữ liệu.
Dây
Chuỗi redis là một chuỗi các byte. Các chuỗi trong Redis là an toàn nhị phân, có nghĩa là chúng có độ dài đã biết không được xác định bởi bất kỳ ký tự kết thúc đặc biệt nào. Do đó, bạn có thể lưu trữ bất kỳ thứ gì lên đến 512 megabyte trong một chuỗi.
Thí dụ
redis 127.0.0.1:6379> SET name "tutorialspoint"
OK
redis 127.0.0.1:6379> GET name
"tutorialspoint"
Trong ví dụ trên, SET và GET là các lệnh của Redis, name là khóa được sử dụng trong Redis và tutorialspoint là giá trị chuỗi được lưu trữ trong Redis.
Note - Giá trị chuỗi có thể có độ dài tối đa 512 megabyte.
Băm
Hàm băm Redis là một tập hợp các cặp giá trị khóa. Redis Hashes là bản đồ giữa các trường chuỗi và giá trị chuỗi. Do đó, chúng được sử dụng để đại diện cho các đối tượng.
Thí dụ
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"
Trong ví dụ trên, kiểu dữ liệu băm được sử dụng để lưu trữ đối tượng của người dùng chứa thông tin cơ bản của người dùng. ĐâyHMSET, HGETALL là các lệnh cho Redis, trong khi user − 1 là chìa khóa.
Mỗi băm có thể lưu trữ tối đa 2 cặp giá trị trường 32 - 1 (hơn 4 tỷ đồng).
Danh sách
Redis Lists đơn giản là danh sách các chuỗi, được sắp xếp theo thứ tự chèn. Bạn có thể thêm các phần tử vào Danh sách Redis ở phần đầu hoặc phần đuôi.
Thí dụ
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"
Độ dài tối đa của danh sách là 2 32 - 1 phần tử (4294967295, hơn 4 tỷ phần tử trên mỗi danh sách).
Bộ
Redis Sets là một tập hợp các chuỗi không có thứ tự. Trong Redis, bạn có thể thêm, bớt và kiểm tra sự tồn tại của các thành viên trong độ phức tạp thời gian O (1).
Thí dụ
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 - Trong ví dụ trên, rabitmq được thêm hai lần, tuy nhiên do thuộc tính duy nhất của tập hợp, nó chỉ được thêm một lần.
Số lượng thành viên tối đa trong một tập hợp là 2 32 - 1 (4294967295, hơn 4 tỷ thành viên mỗi tập hợp).
Bộ được sắp xếp
Redis Sorted Sets tương tự như Redis Sets, các tập hợp chuỗi không lặp lại. Sự khác biệt là, mọi thành viên của Tập hợp đã sắp xếp được liên kết với một điểm số, được sử dụng để lấy tập hợp đã sắp xếp theo thứ tự, từ điểm nhỏ nhất đến điểm lớn nhất. Trong khi các thành viên là duy nhất, điểm số có thể được lặp lại.
Thí dụ
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"
Các lệnh Redis được sử dụng để thực hiện một số thao tác trên máy chủ Redis.
Để chạy các lệnh trên máy chủ Redis, bạn cần một ứng dụng khách Redis. Ứng dụng khách Redis có sẵn trong gói Redis mà chúng tôi đã cài đặt trước đó.
Cú pháp
Sau đây là cú pháp cơ bản của Redis client.
$redis-cli
Thí dụ
Ví dụ sau giải thích cách chúng ta có thể khởi động ứng dụng Redis.
Để khởi động ứng dụng Redis, hãy mở thiết bị đầu cuối và nhập lệnh redis-cli. Thao tác này sẽ kết nối với máy chủ cục bộ của bạn và bây giờ bạn có thể chạy bất kỳ lệnh nào.
$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
Trong ví dụ trên, chúng tôi kết nối với máy chủ Redis đang chạy trên máy cục bộ và thực hiện một lệnh PING, kiểm tra xem máy chủ có đang chạy hay không.
Chạy lệnh trên máy chủ từ xa
Để chạy lệnh trên máy chủ từ xa của Redis, bạn cần kết nối với máy chủ của cùng một máy khách redis-cli
Cú pháp
$ redis-cli -h host -p port -a password
Thí dụ
Ví dụ sau cho thấy cách kết nối với máy chủ từ xa của Redis, chạy trên máy chủ 127.0.0.1, cổng 6379 và có mật khẩu mật khẩu.
$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
Các lệnh phím Redis được sử dụng để quản lý các phím trong Redis. Sau đây là cú pháp để sử dụng các lệnh redis key.
Cú pháp
redis 127.0.0.1:6379> COMMAND KEY_NAME
Thí dụ
redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> DEL tutorialspoint
(integer) 1
Trong ví dụ trên, DEL là lệnh, trong khi tutorialspointlà chìa khóa. Nếu khóa bị xóa, thì đầu ra của lệnh sẽ là (số nguyên) 1, ngược lại sẽ là (số nguyên) 0.
Lệnh Redis Keys
Bảng sau liệt kê một số lệnh cơ bản liên quan đến phím.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Phím DEL Lệnh này sẽ xóa khóa, nếu nó tồn tại. |
2 | Phím DUMP Lệnh này trả về một phiên bản tuần tự hóa của giá trị được lưu trữ tại khóa được chỉ định. |
3 | Phím EXISTS Lệnh này kiểm tra xem khóa có tồn tại hay không. |
4 | EXPIRE phím giây Đặt thời hạn sử dụng của khóa sau thời gian được chỉ định. |
5 | Dấu thời gian của khóa EXPIREAT Đặt thời hạn sử dụng của khóa sau thời gian được chỉ định. Ở đây thời gian ở định dạng dấu thời gian Unix. |
6 | Phím PEXPIRE mili giây Đặt thời hạn của khóa tính bằng mili giây. |
7 | PEXPIREAT key mili giây-timestamp Đặt thời hạn của khóa trong nhãn thời gian Unix được chỉ định là mili giây. |
số 8 | Mẫu phím Tìm tất cả các khóa phù hợp với mẫu đã chỉ định. |
9 | Phím DI CHUYỂN db Di chuyển một khóa sang cơ sở dữ liệu khác. |
10 | Khóa PERSIST Xóa thời hạn khỏi khóa. |
11 | Khóa PTTL Nhận thời gian còn lại khi khóa hết hạn tính bằng mili giây. |
12 | Khóa TTL Nhận thời gian còn lại khi hết hạn khóa. |
13 | NGẪU NHIÊN Trả về một khóa ngẫu nhiên từ Redis. |
14 | Phím mới RENAME Thay đổi tên khóa. |
15 | Phím mới RENAMENX Đổi tên khóa, nếu khóa mới không tồn tại. |
16 | Khóa TYPE Trả về kiểu dữ liệu của giá trị được lưu trữ trong khóa. |
Các lệnh chuỗi Redis được sử dụng để quản lý các giá trị chuỗi trong Redis. Sau đây là cú pháp để sử dụng các lệnh chuỗi Redis.
Cú pháp
redis 127.0.0.1:6379> COMMAND KEY_NAME
Thí dụ
redis 127.0.0.1:6379> SET tutorialspoint redis
OK
redis 127.0.0.1:6379> GET tutorialspoint
"redis"
Trong ví dụ trên, SET và GET là các lệnh, trong khi tutorialspoint là chìa khóa.
Lệnh Redis Strings
Bảng sau liệt kê một số lệnh cơ bản để quản lý chuỗi trong Redis.
Sr.No | Lệnh & Mô tả |
---|---|
1 | ĐẶT giá trị khóa Lệnh này đặt giá trị tại khóa được chỉ định. |
2 | NHẬN chìa khóa Nhận giá trị của một khóa. |
3 | Phím GETRANGE bắt đầu kết thúc Nhận một chuỗi con của chuỗi được lưu trữ tại một khóa. |
4 | GETSET giá trị khóa Đặt giá trị chuỗi của một khóa và trả về giá trị cũ của nó. |
5 | Phím GETBIT bù đắp Trả về giá trị bit tại khoảng lệch trong giá trị chuỗi được lưu trữ tại khóa. |
6 | Phím MGET1 [key2 ..] Nhận giá trị của tất cả các khóa đã cho |
7 | Giá trị bù phím SETBIT Đặt hoặc xóa bit ở độ lệch trong giá trị chuỗi được lưu trữ tại khóa |
số 8 | Giá trị giây của khóa SETEX Đặt giá trị khi khóa hết hạn |
9 | Giá trị khóa SETNX Đặt giá trị của khóa, chỉ khi khóa không tồn tại |
10 | Giá trị bù phím SETRANGE Ghi đè một phần của chuỗi tại khóa bắt đầu từ độ lệch được chỉ định |
11 | Phím STRLEN Nhận độ dài của giá trị được lưu trữ trong một khóa |
12 | Giá trị khóa MSET [giá trị khóa ...] Đặt nhiều khóa thành nhiều giá trị |
13 | Giá trị khóa MSETNX [giá trị khóa ...] Đặt nhiều khóa thành nhiều giá trị, chỉ khi không có khóa nào tồn tại |
14 | Giá trị mili giây của khóa PSETEX Đặt giá trị và thời hạn tính bằng mili giây của khóa |
15 | Khóa INCR Tăng giá trị số nguyên của khóa lên một |
16 | Gia số chính INCRBY Tăng giá trị số nguyên của một khóa lên số tiền đã cho |
17 | Gia số phím INCRBYFLOAT Tăng giá trị thực của một khóa bằng số tiền đã cho |
18 | Khóa DECR Giảm giá trị số nguyên của khóa đi một |
19 | Giảm phím DECRBY Giảm giá trị số nguyên của khóa theo số đã cho |
20 | APPEND giá trị khóa Thêm một giá trị vào một khóa |
Redis Hashes là bản đồ giữa các trường chuỗi và các giá trị chuỗi. Do đó, chúng là kiểu dữ liệu hoàn hảo để biểu diễn các đối tượng.
Trong Redis, mỗi hàm băm có thể lưu trữ hơn 4 tỷ cặp giá trị trường.
Thí dụ
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"
Trong ví dụ trên, chúng tôi đã thiết lập chi tiết hướng dẫn Redis (tên, mô tả, lượt thích, khách truy cập) trong hàm băm có tên 'tutorialspoint'.
Redis Hash Commands
Bảng sau liệt kê một số lệnh cơ bản liên quan đến băm.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Trường khóa HDEL2 [field2] Xóa một hoặc nhiều trường băm. |
2 | Trường khóa HEXISTS Xác định xem trường băm có tồn tại hay không. |
3 | Trường khóa HGET Nhận giá trị của trường băm được lưu trữ tại khóa được chỉ định. |
4 | Phím HGETALL Nhận tất cả các trường và giá trị được lưu trữ trong hàm băm tại khóa được chỉ định |
5 | Gia số trường khóa HINCRBY Tăng giá trị số nguyên của trường băm lên một số nhất định |
6 | Gia số trường khóa HINCRBYFLOAT Tăng giá trị thực của một trường băm bằng số lượng đã cho |
7 | Phím HKEYS Nhận tất cả các trường trong một hàm băm |
số 8 | Khóa HLEN Nhận số lượng trường trong một hàm băm |
9 | Trường khóa HMGET1 [field2] Nhận giá trị của tất cả các trường băm đã cho |
10 | Trường khóa HMSET1 giá trị1 [trường2 giá trị2] Đặt nhiều trường băm thành nhiều giá trị |
11 | Giá trị trường khóa HSET Đặt giá trị chuỗi của một trường băm |
12 | Giá trị trường khóa HSETNX Đặt giá trị của trường băm, chỉ khi trường không tồn tại |
13 | Khóa HVALS Nhận tất cả các giá trị trong một hàm băm |
14 | Con trỏ phím HSCAN [mẫu MATCH] [COUNT số] Lặp lại liên tục các trường băm và các giá trị được liên kết |
Redis Lists đơn giản là danh sách các chuỗi, được sắp xếp theo thứ tự chèn. Bạn có thể thêm các phần tử trong danh sách Redis ở phần đầu hoặc phần cuối của danh sách.
Độ dài tối đa của danh sách là 2 32 - 1 phần tử (4294967295, hơn 4 tỷ phần tử trên mỗi danh sách).
Thí dụ
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"
Trong ví dụ trên, ba giá trị được chèn vào danh sách Redis có tên là 'hướng dẫn' bằng lệnh LPUSH.
Redis Liệt kê các lệnh
Bảng sau liệt kê một số lệnh cơ bản liên quan đến danh sách.
Sr.No | Lệnh & Mô tả |
---|---|
1 | BLPOP key1 [key2] hết giờ Xóa và lấy phần tử đầu tiên trong danh sách hoặc chặn cho đến khi có phần tử |
2 | BRPOP key1 [key2] hết giờ Loại bỏ và lấy phần tử cuối cùng trong danh sách hoặc chặn cho đến khi có phần tử |
3 | BRPOPLPUSH nguồn đích hết thời gian chờ Pops một giá trị từ một danh sách, đẩy nó sang một danh sách khác và trả về nó; hoặc khối cho đến khi có sẵn |
4 | Chỉ mục chính LINDEX Lấy một phần tử từ danh sách theo chỉ mục của nó |
5 | Khóa LINSERT TRƯỚC | SAU giá trị tổng hợp Chèn một phần tử trước hoặc sau một phần tử khác trong danh sách |
6 | Khóa LLEN Nhận độ dài của danh sách |
7 | Khóa LPOP Xóa và lấy phần tử đầu tiên trong danh sách |
số 8 | Giá trị khóa LPUSH1 [value2] Thêm một hoặc nhiều giá trị vào danh sách |
9 | Giá trị khóa LPUSHX Thêm một giá trị vào danh sách, chỉ khi danh sách tồn tại |
10 | Phím bắt đầu dừng LRANGE Nhận một loạt các phần tử từ một danh sách |
11 | Giá trị đếm khóa LREM Xóa các phần tử khỏi danh sách |
12 | Giá trị chỉ mục chính LSET Đặt giá trị của một phần tử trong danh sách theo chỉ mục của nó |
13 | Phím khởi động LTRIM dừng Cắt danh sách theo phạm vi được chỉ định |
14 | Phím RPOP Loại bỏ và lấy phần tử cuối cùng trong danh sách |
15 | Đích nguồn RPOPLPUSH Loại bỏ phần tử cuối cùng trong danh sách, nối nó vào một danh sách khác và trả về |
16 | Giá trị khóa RPUSH1 [value2] Thêm một hoặc nhiều giá trị vào danh sách |
17 | Giá trị khóa RPUSHX Thêm giá trị vào danh sách, chỉ khi danh sách tồn tại |
Redis Sets là một bộ sưu tập các chuỗi duy nhất không có thứ tự. Các bộ phương tiện duy nhất không cho phép lặp lại dữ liệu trong một khóa.
Trong Redis set, hãy thêm, bớt và kiểm tra sự tồn tại của các phần tử trong O (1) (thời gian không đổi bất kể số lượng phần tử chứa bên trong Set). Độ dài tối đa của danh sách là 2 32 - 1 phần tử (4294967295, hơn 4 tỷ phần tử mỗi tập hợp).
Thí dụ
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"
Trong ví dụ trên, ba giá trị được chèn vào tập hợp Redis có tên là 'hướng dẫn' bằng lệnh SADD.
Redis đặt lệnh
Bảng sau liệt kê một số lệnh cơ bản liên quan đến tập hợp.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Thành viên chính của SADD1 [member2] Thêm một hoặc nhiều thành viên vào một tập hợp |
2 | Phím SCARD Nhận số lượng thành viên trong một tập hợp |
3 | SDIFF key1 [key2] Trừ nhiều bộ |
4 | SDIFFSTORE đích khóa1 [key2] Trừ nhiều tập hợp và lưu trữ tập hợp kết quả trong một khóa |
5 | Phím SINTER1 [key2] Giao nhau nhiều bộ |
6 | SINTERSTORE khóa đích1 [key2] Giao nhau nhiều tập hợp và lưu trữ tập hợp kết quả trong một khóa |
7 | Thành viên chủ chốt của SISMEMBER Xác định xem một giá trị đã cho có phải là thành viên của một tập hợp hay không |
số 8 | Khóa SMEMBERS Nhận tất cả các thành viên trong một tập hợp |
9 | Thành viên đích nguồn SMOVE Di chuyển một thành viên từ nhóm này sang nhóm khác |
10 | Phím SPOP Loại bỏ và trả về một thành viên ngẫu nhiên từ một tập hợp |
11 | Khóa SRANDMEMBER [số lượng] Nhận một hoặc nhiều thành viên ngẫu nhiên từ một tập hợp |
12 | Thành viên chính của SREM1 [member2] Xóa một hoặc nhiều thành viên khỏi một nhóm |
13 | SUNION key1 [key2] Thêm nhiều bộ |
14 | SUNIONSTORE khóa đích1 [key2] Thêm nhiều tập hợp và lưu trữ tập hợp kết quả trong một khóa |
15 | Con trỏ phím SSCAN [mẫu MATCH] [COUNT số] Tăng dần số lần lặp lại các phần tử đã đặt |
Redis Sorted Sets tương tự như Redis Sets với tính năng duy nhất của các giá trị được lưu trữ trong một tập hợp. Sự khác biệt là, mọi thành viên của Tập hợp đã sắp xếp được liên kết với một điểm số, được sử dụng để lấy tập hợp đã sắp xếp theo thứ tự, từ điểm nhỏ nhất đến điểm lớn nhất.
Trong tập đã sắp xếp của Redis, hãy thêm, bớt và kiểm tra sự tồn tại của các phần tử trong O (1) (thời gian không đổi bất kể số phần tử có bên trong tập hợp). Độ dài tối đa của danh sách là 2 32 - 1 phần tử (4294967295, hơn 4 tỷ phần tử mỗi tập hợp).
Thí dụ
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"
Trong ví dụ trên, ba giá trị được chèn với điểm của nó trong tập hợp được sắp xếp của Redis có tên là 'hướng dẫn' bằng lệnh ZADD.
Redis Sorted Sets Lệnh
Bảng sau liệt kê một số lệnh cơ bản liên quan đến các tập hợp đã sắp xếp.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Điểm chính của ZADD1 thành viên1 [score2 thành viên2] Thêm một hoặc nhiều thành viên vào một nhóm đã được sắp xếp hoặc cập nhật điểm của nó, nếu nó đã tồn tại |
2 | Khóa ZCARD Nhận số lượng thành viên trong một tập hợp được sắp xếp |
3 | ZCOUNT khóa tối thiểu tối đa Đếm các thành viên trong một tập hợp đã sắp xếp với điểm trong các giá trị đã cho |
4 | Thành viên tăng khóa ZINCRBY Tăng điểm của một thành viên trong nhóm được sắp xếp |
5 | ZINTERSTORE phím số đích [key ...] Giao nhau nhiều tập hợp đã sắp xếp và lưu trữ tập hợp đã sắp xếp kết quả trong một khóa mới |
6 | Tối đa tối thiểu ZLEXCOUNT khóa Đếm số lượng thành viên trong một tập hợp được sắp xếp giữa một phạm vi từ vựng nhất định |
7 | Điểm dừng bắt đầu bằng phím ZRANGE [WITHSCORES] Trả về một phạm vi thành viên trong một tập hợp được sắp xếp, theo chỉ mục |
số 8 | Tối đa khóa tối thiểu của khóa ZRANGEBYLEX [LIMIT số chênh lệch] Trả về một loạt các thành viên trong một tập hợp được sắp xếp, theo phạm vi từ vựng |
9 | Tối đa khóa tối thiểu ZRANGEBYSCORE [WITHSCORES] [LIMIT] Trả về một loạt các thành viên trong một tập hợp đã sắp xếp, theo điểm số |
10 | Thành viên chính của ZRANK Xác định chỉ mục của một thành viên trong một tập hợp được sắp xếp |
11 | Thành viên chính của ZREM [thành viên ...] Xóa một hoặc nhiều thành viên khỏi nhóm đã sắp xếp |
12 | Tối đa tối thiểu của khóa ZREMRANGEBYLEX Loại bỏ tất cả các thành viên trong một tập hợp được sắp xếp giữa phạm vi từ vựng đã cho |
13 | Phím bắt đầu dừng ZREMRANGEBYRANK Loại bỏ tất cả các thành viên trong một nhóm được sắp xếp trong các chỉ mục nhất định |
14 | Tối đa khóa tối thiểu của khóa ZREMRANGEBYSCORE Loại bỏ tất cả các thành viên trong một nhóm được sắp xếp trong số điểm đã cho |
15 | Dừng bắt đầu bằng phím ZREVRANGE [WITHSCORES] Trả về một loạt các thành viên trong một tập hợp được sắp xếp, theo chỉ mục, với điểm số được sắp xếp từ cao đến thấp |
16 | Tối thiểu khóa tối đa của khóa ZREVRANGEBYSCORE [WITHSCORES] Trả về một loạt các thành viên trong một tập hợp được sắp xếp, theo điểm số, với điểm số được sắp xếp từ cao đến thấp |
17 | Thành viên chính của ZREVRANK Xác định chỉ số của một thành viên trong một tập hợp đã được sắp xếp, với điểm số được sắp xếp từ cao đến thấp |
18 | Thành viên chính của ZSCORE Nhận điểm số được liên kết với thành viên đã cho trong một tập hợp được sắp xếp |
19 | ZUNIONSTORE phím số đích [key ...] Thêm nhiều tập hợp đã sắp xếp và lưu trữ tập hợp đã sắp xếp kết quả trong một khóa mới |
20 | Con trỏ phím ZSCAN [mẫu MATCH] [COUNT số] Lặp lại tăng dần các phần tử của tập hợp đã sắp xếp và điểm số liên quan |
Redis HyperLogLog là một thuật toán sử dụng ngẫu nhiên hóa để cung cấp số lượng phần tử duy nhất trong một tập hợp chỉ sử dụng một hằng số và một lượng nhỏ bộ nhớ.
HyperLogLog cung cấp một ước lượng rất tốt về bản số của một tập hợp ngay cả khi sử dụng một lượng bộ nhớ rất nhỏ khoảng 12 kbyte mỗi khóa với sai số tiêu chuẩn là 0,81%. Không có giới hạn về số lượng vật phẩm bạn có thể đếm, trừ khi bạn đạt đến 2 64 vật phẩm.
Thí dụ
Ví dụ sau giải thích cách hoạt động của 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 lệnh HyperLogLog
Bảng sau liệt kê một số lệnh cơ bản liên quan đến Redis HyperLogLog.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Phần tử khóa PFADD [phần tử ...] Thêm các phần tử được chỉ định vào HyperLogLog được chỉ định. |
2 | PFCOUNT khóa [khóa ...] Trả về số lượng xấp xỉ của (các) tập được quan sát bởi HyperLogLog tại (các) khóa. |
3 | Mã nguồn đích PFMERGE mã nguồn [mã nguồn ...] Hợp nhất N HyperLogLog khác nhau thành một. |
Redis Pub / Sub triển khai hệ thống nhắn tin nơi người gửi (trong thuật ngữ redis gọi là nhà xuất bản) gửi tin nhắn trong khi người nhận (người đăng ký) nhận được chúng. Liên kết mà các tin nhắn được chuyển được gọi làchannel.
Trong Redis, khách hàng có thể đăng ký bất kỳ số lượng kênh nào.
Thí dụ
Ví dụ sau giải thích cách hoạt động của khái niệm người đăng ký xuất bản. Trong ví dụ sau, một khách hàng đăng ký kênh có tên 'redisChat'.
redis 127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
Bây giờ, hai khách hàng đang xuất bản tin nhắn trên cùng một kênh có tên 'redisChat' và khách hàng đã đăng ký ở trên đang nhận tin nhắn.
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"
Lệnh Redis PubSub
Bảng sau liệt kê một số lệnh cơ bản liên quan đến Redis Pub / Sub.
Sr.No | Lệnh & Mô tả |
---|---|
1 | PSUBSCRIBE mẫu [mẫu ...] Đăng ký các kênh phù hợp với các mẫu nhất định. |
2 | PUBSUB lệnh phụ [đối số [đối số ...]] Cho biết trạng thái của hệ thống Pub / Sub. Ví dụ, những máy khách nào đang hoạt động trên máy chủ. |
3 | PUBLISH thông báo kênh Đăng tin nhắn lên một kênh. |
4 | PUNSUBSCRIBE [mẫu [mẫu ...]] Ngừng nghe tin nhắn được đăng lên các kênh khớp với các mẫu đã cho. |
5 | SUBSCRIBE kênh [kênh ...] Nghe các tin nhắn được xuất bản trên các kênh nhất định. |
6 | UNSUBSCRIBE [kênh [channel ...]] Dừng nghe tin nhắn đã đăng trên các kênh nhất định. |
Các giao dịch Redis cho phép thực hiện một nhóm lệnh trong một bước duy nhất. Sau đây là hai thuộc tính của Giao dịch.
Tất cả các lệnh trong một giao dịch được thực hiện tuần tự như một hoạt động riêng lẻ. Không thể có yêu cầu do một khách hàng khác đưa ra được phân phát ở giữa quá trình thực hiện giao dịch Redis.
Redis giao dịch cũng là nguyên tử. Nguyên tử có nghĩa là tất cả các lệnh hoặc không có lệnh nào được xử lý.
Mẫu vật
Giao dịch Redis được bắt đầu bằng lệnh MULTI và sau đó bạn cần chuyển một danh sách các lệnh sẽ được thực hiện trong giao dịch, sau đó toàn bộ giao dịch được thực hiện bởi EXEC chỉ huy.
redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
Thí dụ
Ví dụ sau giải thích cách giao dịch Redis có thể được bắt đầu và thực hiện.
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
Lệnh giao dịch Redis
Bảng sau đây cho thấy một số lệnh cơ bản liên quan đến các giao dịch Redis.
Sr.No | Lệnh & Mô tả |
---|---|
1 | TIẾT KIỆM Hủy bỏ tất cả các lệnh được đưa ra sau MULTI |
2 | THỰC HIỆN Thực thi tất cả các lệnh được đưa ra sau MULTI |
3 | ĐA Đánh dấu sự bắt đầu của một khối giao dịch |
4 | UNWATCH Tiện ích về tất cả các khóa đã xem |
5 | Phím XEM [phím ...] Xem các khóa đã cho để xác định việc thực thi khối MULTI / EXEC |
Tập lệnh Redis được sử dụng để đánh giá các tập lệnh bằng trình thông dịch Lua. Nó được tích hợp vào Redis bắt đầu từ phiên bản 2.6.0. Lệnh được sử dụng để viết kịch bản làEVAL chỉ huy.
Cú pháp
Sau đây là cú pháp cơ bản của EVAL chỉ huy.
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
Thí dụ
Ví dụ sau giải thích cách hoạt động của tập lệnh 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 Scripting Commands
Bảng sau liệt kê một số lệnh cơ bản liên quan đến Redis Scripting.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Các phím số của tập lệnh EVAL [key ...] arg [arg ...] Thực thi một tập lệnh Lua. |
2 | EVALSHA sha1 numkeys key [key ...] arg [arg ...] Thực thi một tập lệnh Lua. |
3 | Tập lệnh SCRIPT EXISTS [script ...] Kiểm tra sự tồn tại của tập lệnh trong bộ đệm tập lệnh. |
4 | SCRIPT FLUSH Xóa tất cả các tập lệnh khỏi bộ đệm tập lệnh. |
5 | SCRIPT KILL Diệt tập lệnh hiện đang được thực thi. |
6 | Tập lệnh SCRIPT LOAD Tải tập lệnh Lua được chỉ định vào bộ đệm tập lệnh. |
Các lệnh kết nối Redis về cơ bản được sử dụng để quản lý các kết nối máy khách với máy chủ Redis.
Thí dụ
Ví dụ sau giải thích cách máy khách tự xác thực với máy chủ Redis và kiểm tra xem máy chủ có đang chạy hay không.
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Lệnh kết nối Redis
Bảng sau liệt kê một số lệnh cơ bản liên quan đến kết nối Redis.
Sr.No | Lệnh & Mô tả |
---|---|
1 | Mật khẩu AUTH Xác thực máy chủ bằng mật khẩu đã cho |
2 | Tin nhắn ECHO In chuỗi đã cho |
3 | PING Kiểm tra xem máy chủ có đang chạy hay không |
4 | QUIT Đóng kết nối hiện tại |
5 | CHỌN chỉ mục Thay đổi cơ sở dữ liệu đã chọn cho kết nối hiện tại |
Các lệnh máy chủ Redis về cơ bản được sử dụng để quản lý máy chủ Redis.
Thí dụ
Ví dụ sau giải thích cách chúng tôi có thể nhận được tất cả số liệu thống kê và thông tin về máy chủ.
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
Lệnh máy chủ Redis
Bảng sau liệt kê một số lệnh cơ bản liên quan đến máy chủ Redis.
Sr.No | Lệnh & Mô tả |
---|---|
1 | BGREWRITEAOF Ghi lại không đồng bộ tệp chỉ nối thêm |
2 | BGSAVE Lưu không đồng bộ tập dữ liệu vào đĩa |
3 | KHÁCH HÀNG GIẾT [ip: port] [ID client-id] Giết kết nối của khách hàng |
4 | DANH SÁCH KHÁCH HÀNG Nhận danh sách các kết nối máy khách với máy chủ |
5 | CLIENT GETNAME Lấy tên của kết nối hiện tại |
6 | Thời gian chờ CLIENT PAUSE Dừng xử lý lệnh từ máy khách trong một thời gian cụ thể |
7 | CLIENT SETNAME tên-kết nối Đặt tên kết nối hiện tại |
số 8 | CỤM CỤM Nhận một mảng của vị trí Cụm đến ánh xạ nút |
9 | CHỈ HUY Nhận một loạt các chi tiết lệnh Redis |
10 | ĐẾM LỆNH Nhận tổng số lệnh Redis |
11 | COMMAND GETKEYS Trích xuất các khóa được cung cấp một lệnh Redis đầy đủ |
12 | BGSAVE Lưu không đồng bộ tập dữ liệu vào đĩa |
13 | THÔNG TIN LỆNH Tên lệnh [tên lệnh ...] Nhận một loạt các chi tiết lệnh Redis cụ thể |
14 | CONFIG GET tham số Nhận giá trị của thông số cấu hình |
15 | CẤU HÌNH LÀM LẠI Viết lại tệp cấu hình với cấu hình trong bộ nhớ |
16 | CONFIG SET giá trị thông số Đặt thông số cấu hình thành giá trị đã cho |
17 | CẤU HÌNH ĐẶT LẠI Đặt lại thống kê do INFO trả về |
18 | DBSIZE Trả về số lượng khóa trong cơ sở dữ liệu đã chọn |
19 | Khóa ĐỐI TƯỢNG NỢ Nhận thông tin gỡ lỗi về khóa |
20 | GẶP GỠ NỢ Làm cho máy chủ gặp sự cố |
21 | FLUSHALL Xóa tất cả các khóa khỏi tất cả cơ sở dữ liệu |
22 | FLUSHDB Xóa tất cả các khóa khỏi cơ sở dữ liệu hiện tại |
23 | THÔNG TIN [phần] Nhận thông tin và thống kê về máy chủ |
24 | LƯU CUỐI Lấy dấu thời gian UNIX của lần lưu thành công cuối cùng vào đĩa |
25 | GIÁM SÁT Nghe tất cả các yêu cầu mà máy chủ nhận được trong thời gian thực |
26 | VAI TRÒ Trả về vai trò của cá thể trong bối cảnh sao chép |
27 | TIẾT KIỆM Lưu đồng bộ tập dữ liệu vào đĩa |
28 | SHUTDOWN [NOSAVE] [LƯU] Đồng bộ lưu tập dữ liệu vào đĩa và sau đó tắt máy chủ |
29 | Cổng máy chủ SLAVEOF Làm cho máy chủ trở thành nô lệ của phiên bản khác hoặc quảng bá nó như một máy chủ |
30 | Lệnh con SLOWLOG [đối số] Quản lý nhật ký truy vấn chậm của Redis |
31 | ĐỒNG BỘ HÓA Lệnh được sử dụng để sao chép |
32 | THỜI GIAN Trả về thời gian máy chủ hiện tại |
Redis SAVE được sử dụng để tạo bản sao lưu của cơ sở dữ liệu Redis hiện tại.
Cú pháp
Sau đây là cú pháp cơ bản của redis SAVE chỉ huy.
127.0.0.1:6379> SAVE
Thí dụ
Ví dụ sau tạo một bản sao lưu của cơ sở dữ liệu hiện tại.
127.0.0.1:6379> SAVE
OK
Lệnh này sẽ tạo ra một dump.rdb tệp trong thư mục Redis của bạn.
Khôi phục dữ liệu Redis
Để khôi phục dữ liệu Redis, hãy di chuyển tệp sao lưu Redis (dump.rdb) vào thư mục Redis của bạn và khởi động máy chủ. Để lấy thư mục Redis của bạn, hãy sử dụngCONFIG lệnh của Redis như hình dưới đây.
127.0.0.1:6379> CONFIG get dir
1) "dir"
2) "/user/tutorialspoint/redis-2.8.13/src"
Trong đầu ra của lệnh trên /user/tutorialspoint/redis-2.8.13/src là thư mục, nơi máy chủ Redis được cài đặt.
Bgsave
Để tạo bản sao lưu Redis, một lệnh thay thế BGSAVEcũng có sẵn. Lệnh này sẽ bắt đầu quá trình sao lưu và chạy nó trong nền.
Thí dụ
127.0.0.1:6379> BGSAVE
Background saving started
Cơ sở dữ liệu Redis có thể được bảo mật, do đó bất kỳ máy khách nào tạo kết nối đều cần phải xác thực trước khi thực hiện lệnh. Để bảo mật Redis, bạn cần đặt mật khẩu trong tệp cấu hình.
Thí dụ
Ví dụ sau đây cho thấy các bước để bảo mật phiên bản Redis của bạn.
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
Theo mặc định, thuộc tính này trống, có nghĩa là không có mật khẩu nào được đặt cho trường hợp này. Bạn có thể thay đổi thuộc tính này bằng cách thực hiện lệnh sau.
127.0.0.1:6379> CONFIG set requirepass "tutorialspoint"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "tutorialspoint"
Sau khi đặt mật khẩu, nếu bất kỳ ứng dụng nào chạy lệnh mà không xác thực, thì (error) NOAUTH Authentication required. lỗi sẽ trở lại. Do đó, khách hàng cần sử dụngAUTH lệnh để xác thực chính mình.
Cú pháp
Sau đây là cú pháp cơ bản của AUTH chỉ huy.
127.0.0.1:6379> AUTH password
Thí dụ
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 là tiện ích để kiểm tra hiệu suất của Redis bằng cách chạy n lệnh đồng thời.
Cú pháp
Sau đây là cú pháp cơ bản của Redis benchmark.
redis-benchmark [option] [option value]
Thí dụ
Ví dụ sau kiểm tra Redis bằng cách gọi 100000 lệnh.
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
Sau đây là danh sách các tùy chọn có sẵn trong Redis benchmark.
Sr.No | Lựa chọn | Sự miêu tả | Giá trị mặc định |
---|---|---|---|
1 | -h | Chỉ định tên máy chủ lưu trữ | 127.0.0.1 |
2 | -p | Chỉ định cổng máy chủ | 6379 |
3 | -s | Chỉ định ổ cắm máy chủ | |
4 | -c | Chỉ định số lượng kết nối song song | 50 |
5 | -n | Chỉ định tổng số yêu cầu | 10000 |
6 | -d | Chỉ định kích thước dữ liệu của giá trị SET / GET tính bằng byte | 2 |
7 | -k | 1 = tiếp tục sống sót, 0 = kết nối lại | 1 |
số 8 | -r | Sử dụng các khóa ngẫu nhiên cho SET / GET / INCR, giá trị ngẫu nhiên cho SADD | |
9 | -p | Yêu cầu <numreq> của đường ống | 1 |
10 | -h | Chỉ định tên máy chủ lưu trữ | |
11 | -q | Buộc Im lặng đến Redis. Chỉ hiển thị các giá trị truy vấn / giây | |
12 | --csv | Đầu ra ở định dạng CSV | |
13 | -l | Tạo vòng lặp, chạy thử nghiệm mãi mãi | |
14 | -t | Chỉ chạy danh sách kiểm tra được phân tách bằng dấu phẩy | |
15 | -I | Chế độ nhàn rỗi. Chỉ cần mở N kết nối không hoạt động và đợi |
Thí dụ
Ví dụ sau cho thấy nhiều tùy chọn sử dụng trong tiện ích điểm chuẩn của Redis.
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 chấp nhận các kết nối của máy khách trên cổng TCP đang nghe đã định cấu hình và trên ổ cắm Unix, nếu được bật. Khi một kết nối máy khách mới được chấp nhận, các hoạt động sau được thực hiện:
Ổ cắm máy khách được đặt ở trạng thái không chặn vì Redis sử dụng ghép kênh và I / O không chặn.
Tùy chọn TCP_NODELAY được đặt để đảm bảo rằng chúng tôi không có sự chậm trễ trong kết nối của mình.
Một sự kiện tệp có thể đọc được tạo để Redis có thể thu thập các truy vấn của khách hàng ngay khi có dữ liệu mới để đọc trên socket.
Số lượng khách hàng tối đa
Trong cấu hình Redis (redis.conf), có một thuộc tính được gọi là maxclients, mô tả số lượng khách hàng tối đa có thể kết nối với Redis.
Sau đây là cú pháp cơ bản của lệnh.
config get maxclients
1) "maxclients"
2) "10000"
Theo mặc định, thuộc tính này được đặt thành 10000 (tùy thuộc vào giới hạn số lượng bộ mô tả tệp tối đa của Hệ điều hành), mặc dù bạn có thể thay đổi thuộc tính này.
Thí dụ
Trong ví dụ sau, chúng tôi đã đặt số lượng khách hàng tối đa là 100000, trong khi khởi động máy chủ.
redis-server --maxclients 100000
Lệnh máy khách
Sr.No | Chỉ huy | Sự miêu tả |
---|---|---|
1 | CLIENT LIST | Trả về danh sách các máy khách được kết nối với máy chủ Redis |
2 | CLIENT SETNAME | Gán tên cho kết nối hiện tại |
3 | CLIENT GETNAME | Trả về tên của kết nối hiện tại do CLIENT SETNAME đặt |
4 | CLIENT PAUSE | Đây là lệnh kiểm soát kết nối có thể tạm dừng tất cả các ứng dụng khách Redis trong khoảng thời gian được chỉ định (tính bằng mili giây) |
5 | CLIENT KILL | Lệnh này đóng một kết nối máy khách nhất định. |
Redis là một máy chủ TCP và hỗ trợ giao thức yêu cầu / phản hồi. Trong Redis, một yêu cầu được thực hiện theo các bước sau:
Máy khách gửi một truy vấn đến máy chủ và đọc từ ổ cắm, thường là theo cách chặn, đối với phản hồi của máy chủ.
Máy chủ xử lý lệnh và gửi phản hồi trở lại máy khách.
Ý nghĩa của Pipelining
Ý nghĩa cơ bản của pipelining là, máy khách có thể gửi nhiều yêu cầu đến máy chủ mà không cần đợi trả lời và cuối cùng đọc các câu trả lời trong một bước duy nhất.
Thí dụ
Để kiểm tra đường dẫn Redis, chỉ cần khởi động phiên bản Redis và nhập lệnh sau vào terminal.
$(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
Trong ví dụ trên, chúng tôi sẽ kiểm tra kết nối Redis bằng cách sử dụng PINGchỉ huy. Chúng tôi đã đặt một chuỗi có têntutorial với giá trị redis. Sau đó, chúng tôi nhận được giá trị khóa đó và tăng số lượng khách truy cập lên ba lần. Kết quả là chúng ta có thể thấy rằng tất cả các lệnh được gửi đến Redis một lần và Redis cung cấp kết quả đầu ra của tất cả các lệnh trong một bước duy nhất.
Lợi ích của Pipelining
Lợi ích của kỹ thuật này là hiệu suất giao thức được cải thiện đáng kể. Tốc độ đạt được nhờ pipelining dao động từ hệ số năm đối với các kết nối đến máy chủ cục bộ cho đến hệ số ít nhất là một trăm đối với các kết nối internet chậm hơn.
Phân vùng là quá trình chia nhỏ dữ liệu của bạn thành nhiều phiên bản Redis, sao cho mỗi phiên bản sẽ chỉ chứa một tập hợp con các khóa của bạn.
Lợi ích của phân vùng
Nó cho phép cơ sở dữ liệu lớn hơn nhiều, sử dụng tổng bộ nhớ của nhiều máy tính. Không có phân vùng, bạn bị giới hạn dung lượng bộ nhớ mà một máy tính có thể hỗ trợ.
Nó cho phép mở rộng sức mạnh tính toán đến nhiều lõi và nhiều máy tính, và băng thông mạng cho nhiều máy tính và bộ điều hợp mạng.
Nhược điểm của phân vùng
Các thao tác liên quan đến nhiều phím thường không được hỗ trợ. Ví dụ: bạn không thể thực hiện giao nhau giữa hai tập hợp nếu chúng được lưu trữ trong các khóa được ánh xạ tới các phiên bản Redis khác nhau.
Không thể sử dụng các giao dịch Redis liên quan đến nhiều khóa.
Phân vùng chi tiết là chìa khóa, vì vậy không thể chia nhỏ tập dữ liệu với một khóa khổng lồ như một tập hợp được sắp xếp rất lớn.
Khi sử dụng phân vùng, việc xử lý dữ liệu phức tạp hơn. Ví dụ: bạn phải xử lý nhiều tệp RDB / AOF và để nhận được bản sao lưu dữ liệu của mình, bạn cần tổng hợp các tệp liên tục từ nhiều phiên bản và máy chủ.
Việc thêm và bớt dung lượng có thể phức tạp. Ví dụ: Redis Cluster hỗ trợ tái cân bằng dữ liệu chủ yếu trong suốt với khả năng thêm và xóa các nút trong thời gian chạy. Tuy nhiên, các hệ thống khác như phân vùng phía máy khách và proxy không hỗ trợ tính năng này. Một kỹ thuật được gọi làPresharding giúp trong vấn đề này.
Các loại phân vùng
Có hai kiểu phân vùng có sẵn trong Redis. Giả sử chúng ta có bốn phiên bản Redis, R0, R1, R2, R3 và nhiều khóa đại diện cho người dùng như user: 1, user: 2, ... v.v.
Phân vùng phạm vi
Việc phân vùng theo phạm vi được thực hiện bằng cách ánh xạ các phạm vi đối tượng thành các cá thể Redis cụ thể. Giả sử trong ví dụ của chúng ta, người dùng từ ID 0 đến ID 10000 sẽ chuyển sang trường hợp R0, trong khi người dùng từ ID 10001 đến ID 20000 sẽ đi vào trường hợp R1, v.v.
Phân vùng băm
Trong kiểu phân vùng này, một hàm băm (ví dụ: hàm mô-đun) được sử dụng để chuyển đổi khóa thành một số và sau đó dữ liệu được lưu trữ trong các phiên bản Redis khác nhau.
Trước khi bắt đầu sử dụng Redis trong các chương trình Java, bạn cần đảm bảo rằng bạn đã thiết lập trình điều khiển Java Redis và Java trên máy. Bạn có thể xem hướng dẫn Java của chúng tôi để cài đặt Java trên máy của bạn.
Cài đặt
Bây giờ, chúng ta hãy xem cách thiết lập trình điều khiển Java Redis.
Bạn cần tải xuống jar từ đường dẫn Download jedis.jar. Đảm bảo tải xuống phiên bản mới nhất của nó.
Bạn cần bao gồm jedis.jar vào classpath của bạn.
Kết nối với Máy chủ 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());
}
}
Bây giờ, hãy biên dịch và chạy chương trình trên để kiểm tra kết nối tới máy chủ Redis. Bạn có thể thay đổi đường dẫn của mình theo yêu cầu của bạn. Chúng tôi đang giả định phiên bản hiện tại củajedis.jar có sẵn trong đường dẫn hiện tại.
$javac RedisJava.java
$java RedisJava
Connection to server sucessfully
Server is running: PONG
Ví dụ về chuỗi 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"));
}
}
Bây giờ, hãy biên dịch và chạy chương trình trên.
$javac RedisStringJava.java
$java RedisStringJava
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Ví dụ về danh sách Java của Redis
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));
}
}
}
Bây giờ, hãy biên dịch và chạy chương trình trên.
$javac RedisListJava.java
$java RedisListJava
Connection to server sucessfully
Stored string in redis:: Redis
Stored string in redis:: Mongodb
Stored string in redis:: Mysql
Ví dụ về Redis Java Keys
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));
}
}
}
Bây giờ, hãy biên dịch và chạy chương trình trên.
$javac RedisKeyJava.java
$java RedisKeyJava
Connection to server sucessfully
List of stored keys:: tutorial-name
List of stored keys:: tutorial-list
Trước khi bắt đầu sử dụng Redis trong các chương trình PHP của mình, bạn cần đảm bảo rằng bạn đã thiết lập trình điều khiển PHP của Redis và PHP trên máy. Bạn có thể xem hướng dẫn PHP để cài đặt PHP trên máy của mình.
Cài đặt
Bây giờ, chúng ta hãy kiểm tra cách thiết lập trình điều khiển PHP của Redis.
Bạn cần tải xuống phpredis từ kho lưu trữ github https://github.com/nicolasff/phpredis. Khi bạn đã tải xuống, hãy giải nén các tệp vào thư mục phpredis. Trên Ubuntu, hãy cài đặt phần mở rộng sau.
cd phpredis
sudo phpize
sudo ./configure
sudo make
sudo make install
Bây giờ, sao chép và dán nội dung của thư mục “module” vào thư mục mở rộng PHP và thêm các dòng sau vào php.ini.
extension = redis.so
Bây giờ, quá trình cài đặt Redis PHP của bạn đã hoàn tất
Kết nối với Máy chủ 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();
?>
Khi chương trình được thực thi, nó sẽ cho ra kết quả như sau.
Connection to server sucessfully
Server is running: PONG
Ví dụ về chuỗi PHP của Redis
<?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");
?>
Khi chương trình trên được thực thi, nó sẽ cho ra kết quả như sau.
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Ví dụ về danh sách php của Redis
<?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);
?>
Khi chương trình trên được thực thi, nó sẽ cho ra kết quả như sau.
Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
Ví dụ về khóa PHP của Redis
<?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);
?>
Khi chương trình được thực thi, nó sẽ cho ra kết quả như sau.
Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list