Cài đặt Redis trên Debian 12 - Install Redis on Debian 12

Redis (Remote Dictionary Server) là một hệ thống lưu trữ dữ liệu trong bộ nhớ mã nguồn mở, có thể được sử dụng như một bộ nhớ cache, máy chủ trung gian tin nhắn và lưu trữ dữ liệu thời gian thực. Thường được gọi là "máy chủ cấu trúc dữ liệu" vì nó cho phép bạn lưu trữ và thao tác với các loại cấu trúc dữ liệu khác nhau, như chuỗi, danh sách, tập hợp, băm, tập hợp đã sắp xếp và nhiều loại khác. Redis được thiết kế để có hiệu suất cao, độ trễ thấp và khả năng mở rộng. Trong bài viết này, chúng ta sẽ thảo luận về install và cấu hình Redis trên Debian 12.

Install và cấu hình máy chủ Redis trên Debian 12

Bước 1 - Chuẩn bị hệ thống Debian

Đảm bảo các gói hệ thống của bạn được cập nhật trước khi cài đặt Redis hoặc bất kỳ chương trình nào khác.

sudo apt update && sudo apt upgrade -y

Bước 2 - Cài đặt các gói cần thiết

Bằng cách sử dụng lệnh sau, bạn có thể cài đặt các gói phần mềm cụ thể cần thiết cho quá trình cài đặt Redis:

sudo apt install software-properties-common apt-transport-https curl ca-certificates -y

Bước 3 - Cài đặt máy chủ Redis trên Debian

Trong bản demo này, KDATA sẽ hướng dẫn bạn cách install Redis trên Debian 12 bằng hai phương pháp:

Cách 1: Từ kho lưu trữ hệ thống

Mặc dù Redis là một phần của gói phần mềm tiêu chuẩn của Debian nhưng phiên bản bạn tìm thấy ở đó có thể không phải là phiên bản mới nhất. Debian ưu tiên tính ổn định và thường chỉ phát hành các bản cập nhật bảo mật hoặc quan trọng. Bạn phải nhập lệnh sau vào thiết bị đầu cuối của mình để cài đặt Redis bằng phương pháp này:

$ sudo apt install redis
Suggested packages:
  ruby-redis
The following NEW packages will be installed:
  liblzf1 redis redis-server redis-tools
0 upgraded, 4 newly installed, 0 to remove and 109 not upgraded.
Need to get 1,092 kB of archives.
After this operation, 6,231 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

Xác minh phiên bản đã cài đặt:

$ sudo apt-cache policy redis
redis:
  Installed: 5:7.0.11-1
  Candidate: 5:7.0.11-1
  Version table:
 *** 5:7.0.11-1 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status

Cách 2: Từ kho hệ thống gốc

Phương pháp thứ hai có thể hấp dẫn hơn đối với những người cần hoặc muốn có phiên bản Redis mới nhất. Bạn cần nhập kho APT từ kho chính thức của Redis.io. Các cập nhật tính năng, bản vá bảo mật và sửa lỗi thường xuyên được thêm vào kho lưu trữ này

1.Nhập kho lưu trữ Redis.io

Trước tiên, chúng ta cần nhập khóa GPG. GPG, hay GNU Privacy Guard, là một tiện ích để lưu trữ dữ liệu và liên lạc an toàn.

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Kho lưu trữ sau đó được nhập bằng lệnh sau:

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

2. Cài đặt Redis từ Redis.io

Sau đó, bạn install Redis từ kho Redis.io. Bạn sẽ thấy bản nâng cấp nếu Redis đã được cài đặt từ kho lưu trữ Debian. Lệnh sau sẽ cài đặt Redis, cũng như máy chủ và công cụ Redis:

sudo apt update
sudo apt install redis redis-server redis-tools

Bây giờ hãy kiểm tra phiên bản đã cài đặt:

$ sudo apt-cache policy redis
redis:
  Installed: 6:7.0.12-1rl1~bookworm1
  Candidate: 6:7.0.12-1rl1~bookworm1
  Version table:
 *** 6:7.0.12-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
        100 /var/lib/dpkg/status
     6:7.0.11-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
     6:7.0.10-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
     6:7.0.9-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
     6:7.0.8-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
     6:7.0.7-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages
     6:7.0.6-1rl1~bookworm1 500
        500 https://packages.redis.io/deb bookworm/main amd64 Packages
        500 https://packages.redis.io/deb bookworm/main all Packages

Tiếp theo, sử dụng lệnh sau để kích hoạt phiên bản Redis và đặt nó khởi động khi khởi động hệ thống:

sudo systemctl enable redis-server --now

Sử dụng lệnh này để đảm bảo rằng Redis đang chạy không có lỗi:

$ systemctl status redis-server
 redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; preset: enab>
     Active: active (running) since Sat 2023-08-05 13:44:27 EAT; 5min ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 4691 (redis-server)
     Status: "Ready to accept connections"
      Tasks: 5 (limit: 4623)
     Memory: 7.8M
        CPU: 437ms
     CGroup: /system.slice/redis-server.service
             └─4691 "/usr/bin/redis-server 127.0.0.1:6379"

Bước 4 - Bắt buộc xác thực bằng mật khẩu

Đặt mật khẩu để xác thực và cung cấp thêm một lớp bảo mật cho phiên bản Redis của bạn. Khi kết nối, Redis không yêu cầu mật khẩu theo mặc định. Bỏ dấu chú thích và chỉnh sửa chỉ thị requirepass để tạo một mật khẩu:

Thay YourStrongPasswordHere bằng một mật khẩu mạnh bao gồm các ký tự in hoa, thường, số và ký tự đặc biệt.

$ sudo vim /etc/redis/redis.conf
requirepass YourStrongPasswordHere

Sau khi tạo mật khẩu xong sử dụng lệnh auth kết hợp với mật khẩu khi kết nối với Redis thông qua redis-cli: Redis server chạy trên hosting mặc định (127.0.0.1) và port (6379):

$ redis-cli
127.0.0.1:6379> YourStrongPasswordHere

Sử dụng Redis CLI với các ví dụ

Sau đây là một số ví dụ về cách làm việc với Redis CLI:

  • Cài đặt và nhận giá trị:
$ redis-cli
> SET mykey "Hello, Redis!"
OK
> GET mykey
"Hello, Redis!"
127.0.0.1:6379> 
  • Làm việc với Lists:
$ redis-cli
127.0.0.1:6379> LPUSH mylist "item2"
(integer) 1
127.0.0.1:6379>  LPUSH mylist "item2"
(integer) 2
127.0.0.1:6379> LLEN mylist
(integer) 2
127.0.0.1:6379> LRANGE mylist 0 -1
1) "item2"
2) "item2"
127.0.0.1:6379> 
  • Làm việc với Sets:
$ redis-cli
27.0.0.1:6379>  SADD myset "member1"
(integer) 1
27.0.0.1:6379>  SADD myset "member2"
(integer) 2
27.0.0.1:6379> SMEMBERS myset
1) "member2"
2) "member1"
  • Làm việc với Hashes:
$ redis-cli
27.0.0.1:6379> HMSET myhash field1 "value1" field2 "value2"
OK
> HGET myhash field1
"value1"
> HGETALL myhash
1) "field1"
2) "value1"
3) "field2"
4) "value2"
  • Xóa một key:
127.0.0.1:6379[1]> DEL hello
OK
127.0.0.1:6379[1]> GET hello
(nil)

Bước 5 - Cấu hình kết nối từ xa

Redis được thiết lập để chỉ nghe trên giao diện localhost theo mặc định. Bạn có thể định cấu hình Redis để nghe trên tất cả các giao diện mạng hoặc địa chỉ IP/mạng con được chỉ định.

  • Lắng nghe tất cả các giao diện mạng:

Để Redis lắng nghe trên tất cả các giao diện mạng, hãy thêm một # ở đầu hàng ràng buộc:

$ sudo vim /etc/redis/redis.conf
# bind 127.0.0.1 ::1
  • Liên kết với một địa chỉ IP hoặc mạng con cụ thể:

Việc thay thế địa chỉ IP hoặc mạng con ưa thích của bạn thay cho dòng ràng buộc sẽ liên kết Redis với địa chỉ hoặc mạng con đó:

bind 0.0.0.0/0
#OR
#bind 192.200.x.0/24

Việc yêu cầu mật khẩu là rất quan trọng để tăng cường bảo mật khi liên kết Redis với một địa chỉ IP hoặc mạng con.

Bước 6 - Cấu hình tường lửa cho Redis với UFW

Định cấu hình tường lửa bảo vệ là một bước quan trọng để chạy máy chủ Redis một cách an toàn. Theo mặc định, Redis không có cài đặt tường lửa được cấu hình sẵn. Kiểm tra xem UFW đã được cài đặt trên máy chủ Debian chưa trước khi định cấu hình tường lửa. Bạn dễ dàng cài đặt nó bằng lệnh sau nếu nó chưa được cài đặt:

sudo apt install ufw -y

UFW phải được kích hoạt sau khi cài đặt để bắt đầu hoạt động và bảo vệ máy của bạn. Với lệnh sau, UFW được kích hoạt:

sudo ufw enable

Định cấu hình quy tắc UFW cho Redis, thay thế các quy tắc sau cho phù hợp:

sudo ufw allow proto tcp from <ip address> to any port 6379

Bạn có thể cho phép kết nối từ toàn bộ mạng con nếu bạn đang sử dụng một cụm máy chủ Redis. Thực hiện dòng dưới đây:

sudo ufw allow proto tcp from <ip address>/24 to any port 6379

Xác minh cấu hình UFW:

redis-cli -h  <ip address> ping

Cuối cùng, để áp dụng các cài đặt đã sửa đổi, khởi động lại dịch vụ Redis:

sudo systemctl restart redis

Kiểm tra xem đã khởi động lại thành công chưa:

$ systemctl status redis
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; preset: enab> Active: active (running) since Sat 2023-08-05 15:31:02 EAT; 10s ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 5817 (redis-server) Status: "Ready to accept connections" Tasks: 5 (limit: 4623) Memory: 7.8M CPU: 49ms CGroup: /system.slice/redis-server.service

Các trường hợp sử dụng Redis

  • Bộ nhớ đệm: Một trong những trường hợp sử dụng phổ biến nhất của Redis là bộ nhớ đệm. Nó có thể lưu trữ dữ liệu được truy cập thường xuyên trong bộ nhớ, giảm nhu cầu tìm nạp dữ liệu từ các nguồn dữ liệu chậm hơn như cơ sở dữ liệu. Điều này có thể cải thiện đáng kể hiệu suất của các ứng dụng.
  • Session Store: Redis có thể được sử dụng để lưu trữ dữ liệu phiên cho các ứng dụng web. Vì là kho lưu trữ trong bộ nhớ nên nó nhanh và rất phù hợp để lưu trữ và quản lý phiên người dùng.
  • Phân tích thời gian thực: Redis có thể xử lý việc xử lý và phân tích dữ liệu theo thời gian thực. Nó thường được sử dụng để đếm, thống kê và theo dõi số liệu theo thời gian thực.
  • Message Broker: Redis cung cấp hỗ trợ cho mẫu thông điệp publish/subscribe. Nó có thể được sử dụng như một message broker để xây dựng các hệ thống truyền thông thời gian thực, ứng dụng trò chuyện và nhiều ứng dụng khác.
  • Bảng xếp hạng và cách đếm: Sorted sets trong Redis rất hữu ích để thực hiện bảng xếp hạng, nơi bạn có thể lưu trữ điểm số và xếp hạng. Nó cũng được sử dụng để đếm các sự kiện duy nhất, chẳng hạn như theo dõi số lượt xem trên một trang web.
  • Dữ liệu không gian địa lý: Redis hỗ trợ lưu trữ và truy vấn dữ liệu không gian địa lý, cho phép bạn thực hiện các thao tác liên quan đến dữ liệu dựa trên vị trí.
  • Bộ nhớ đệm truy vấn cơ sở dữ liệu: Redis có thể lưu trữ kết quả của các truy vấn cơ sở dữ liệu đắt tiền, giảm tải cho cơ sở dữ liệu và cải thiện thời gian phản hồi truy vấn.
  • Quản lý hàng đợi nhiệm vụ: Redis có thể được sử dụng làm hàng đợi nhiệm vụ để quản lý các công việc nền và phân bổ nhiệm vụ giữa các công nhân trong hệ thống phân tán.
  • Giới hạn tốc độ: Redis có thể được sử dụng để thực hiện giới hạn tốc độ, đảm bảo rằng các hoạt động hoặc yêu cầu nhất định bị giới hạn trong một khung thời gian xác định.

Tính năng của Redis

  • Lưu trữ dữ liệu trong bộ nhớ (Caching): Redis lưu trữ dữ liệu trong bộ nhớ, giúp cho hoạt động đọc và ghi cực kỳ nhanh.
  • Cấu trúc dữ liệu: Redis hỗ trợ các cấu trúc dữ liệu khác nhau, bao gồm chuỗi, danh sách, bộ, bộ được sắp xếp, băm, bitmap, hyperloglog và chỉ mục không gian địa lý.
  • Real-time Analytics: Redis hỗ trợ tính bền vững của dữ liệu, cho phép bạn lưu dữ liệu vào đĩa và tải lại khi khởi động lại. Nó cung cấp các tùy chọn lưu giữ khác nhau, bao gồm ảnh chụp nhanh và các tệp chỉ nối thêm.
  • Sao chép: Redis hỗ trợ sao chép chính-phụ, cho phép bạn tạo bản sao dữ liệu của mình để có tính sẵn sàng cao và khả năng mở rộng đọc.
  • Hỗ trợ cụm: Redis Cluster cho phép bạn phân phối dữ liệu trên nhiều nút, cung cấp khả năng mở rộng theo chiều ngang và khả năng chịu lỗi.
  • Nhắn tin Pub/Sub: Redis hỗ trợ nhắn tin xuất bản/đăng ký, cho phép liên lạc theo thời gian thực giữa các thành phần của ứng dụng.
  • Lua Scripting: Redis cho phép bạn thực thi các tập lệnh Lua ở phía máy chủ, cung cấp khả năng thao tác dữ liệu mạnh mẽ và linh hoạt.
  • Giao dịch: Redis hỗ trợ các giao dịch nhiều lệnh, cho phép bạn nhóm nhiều lệnh thành một giao dịch.
  • Các hoạt động nguyên tử: Các hoạt động trên các cấu trúc dữ liệu riêng lẻ trong Redis là nguyên tử, đảm bảo tính nhất quán trong môi trường đa luồng hoặc đồng thời.
  • Hết hạn: Bạn có thể đặt thời gian hết hạn cho khóa, sau đó Redis sẽ tự động xóa khóa khỏi cơ sở dữ liệu.
  • Thư viện máy khách: Redis có sẵn các thư viện máy khách cho nhiều ngôn ngữ lập trình, giúp dễ dàng tích hợp vào các ứng dụng khác nhau.

Như vậy, việc install Redis trên Debian 12 đã trở nên dễ dàng hơn bao giờ hết. Bằng cách tuân thủ các bước hướng dẫn trên, bạn đã thành công tạo ra một môi trường Redis mạnh mẽ để tối ưu hóa hiệu suất ứng dụng của mình. Redis không chỉ đơn giản là một hệ thống caching mà còn mang lại sự linh hoạt và khả năng mở rộng cho dự án của bạn.