Hướng dẫn cài đặt và sử dụng redis windows server năm 2024

Redis ngày càng được sử dụng phổ biến, đặc biệt cho các hệ thống lớn đòi hỏi hiệu năng cao. Bài này sẽ giúp bạn từng bước từ việ cài đặt, cấu hình, kết nối, và kinh nghiệm sử dụng Redis.

Hướng dẫn cài đặt và sử dụng redis windows server năm 2024
Hướng dẫn cài đặt, cấu hình, kết nối, sử dụng Redis và một số kinh nghiệm xử lý lỗi

Mục lục

Giới thiệu về Redis

Redis (REmote DIctionary Server) là một mã nguồn mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một database, bộ nhớ cache hay một message broker. Redis hiện nay được ứng dụng rất nhiều, hay sử dụng làm trạm trung chuyển dữ liệu giữa các thành phần trong hệ thống, đặc biệt với những hệ thống đòi hỏi hiệu năng cao.

Các ứng dụng của Redis

  • Caching: Sử dụng làm bộ nhớ đệm. Chính tốc độ đọc ghi nhanh mà Redis có thể làm bộ nhớ đệm, nơi chia sẻ dữ liệu giữa các ứng dụng hoặc làm database tạm thời. Ngoài ra Redis có thể sử dụng để làm Full Page Cache cho website. Cũng vì tính nhất quán của Redis, cho dù restart Redis thì người dùng cũng không có cảm nhận chậm khi tải trang.
  • Counter: Sử dụng làm bộ đếm. Với thuộc tính tăng giảm thông số rất nhanh trong khi dữ liệu được lưu trên RAM, sets và sorted sets được sử dụng thực hiện đếm lượt view của một website, các bảng xếp hạng trong game chẳng hạng. Redis hỗ trợ thread safe do đó nó có thể đồng bộ dữ liệu giữa các request.
  • Publish/Suscribe (Pub/Sub): Tạo kênh chia sẻ dữ liệu. Redis hỗ trợ tạo các channel để trao đổi dữ liệu giữa publisher và subscriber giống như channel trong Socket Cluster hay topic trong Apache Kafka. Ví dụ: Pub/Sub được sử dụng theo dõi các kết nối trong mạng xã hội hoặc các hệ thống chat.
  • Queues: Tạo hàng đợi để xử lý lần lượt các request. Redis cho phép lưu trữ theo list và cung cấp rất nhiều thao tác với các phần tử trong list, vì vậy nó còn được sử dụng như một message queue.

Các kiểu dữ liệu trong Redis

  • STRING: string, integer hoặc float. Redis có thể làm việc với cả string, từng phần của string, cũng như tăng/giảm giá trị của integer, float..
  • LIST: List là một danh sách của strings, sắp xếp theo thứ tự insert. Redis có thể thêm một phần tử vào đầu hoặc cuối list. List phù hợp cho các bài toán cần thao tác với các phần tử gần đầu và cuối vì việc truy xuất này là cực nhanh, cho dù insert cả triệu phần tử. Tuy nhiên nhược điểm là việc truy cập vào các phần tử ở giữa list rất chậm.
  • SET: tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngoài ra Redis còn hỗ trợ các phép toán tập hợp, gồm intersect/union/difference.
  • HASH: lưu trữ hash table của các cặp key-value, trong đó key được sắp xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác thêm, đọc, xóa từng phần tử, cũng như đọc tất cả giá trị.
  • SORTED SET (ZSET): là 1 danh sách, trong đó mỗi phần tử là map của 1 string (member) và 1 floating-point number (score), danh sách được sắp xếp theo score này. Các phần tử của zset được sắp xếp theo thứ tự từ score nhỏ tới lớn.

Persistent redis

Bên cạnh việc lưu key-value trên bộ nhớ RAM, Redis có 2 background threads chuyên làm nhiệm vụ định kỳ ghi dữ liệu lên đĩa cứng.

Có 2 loại file được ghi xuống đĩa cứng:

  • RDB (Redis DataBase file): RDB thực hiện tạo và sao lưu snapshot của DB vào ổ cứng sau mỗi khoảng thời gian nhất định. Mặc định 5 phút / lần (Ko nhớ rõ lắm). Nếu dữ liệu lớn, việc snapshot có thể sẽ làm chậm hệ thống.
  • AOF (Append Only File): AOF lưu lại tất cả các thao tác write mà server nhận được, các thao tác này sẽ được chạy lại khi restart server hoặc tái thiết lập dataset ban đầu. Sử dụng AOF sẽ giúp đảm bảo dataset được bền vững hơn so với dùng RDB. Người dùng có thể config để Redis ghi log theo từng câu query hoặc mỗi giây 1 lần.

Cài đặt trực tiếp

Về cơ bản bạn chỉ cần chạy các lệnh sau:

// Install sudo add-apt-repository ppa:redislabs/redis sudo apt update sudo apt install redis-server // Auto start sudo systemctl enable redis-server // Start service sudo service redis-server start // Test redis-cli

Hướng dẫn cài đặt Redis có rất nhiều, bạn có thể search thêm trên mạng.

Cài đặt thủ công

Trông trường hợp bạn cần cài đặt phiên bản xác định nào đó, bạn có thể sử dụng phương pháp thủ công bằng cách build từ mã nguồn:

Ví dụ lệnh cài đặt phiên bản 4.0.8:

sudo apt-get install build-essential libssl-dev wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xvzf redis-4.0.8.tar.gz cd redis-4.0.8 make sudo make install

Cài đặt phiên bản 4.0.9:

sudo apt-get install build-essential libssl-dev wget http://download.redis.io/releases/redis-4.0.9.tar.gz tar xvzf redis-4.0.9.tar.gz cd redis-4.0.9 cd deps make hiredis jemalloc linenoise lua geohash-int cd .. make sudo make install

Sau khi cài đặt xong, kiểm tra bằng lệnh:

redis-server -v redis-cli

Trong trường hợp cài thủ công mà bạn muốn chạy Redis dưới dạng Service, bạn cần phải cấu hình chạy bằng SystemD. SystemD mặc định có trên Ubuntu. Các bước thực hiện như sau:

Copy tệp redis.conf vào thư mục /etc/redis. Tạo tệp redis-server.service trong thư mục /etc/systemd/system:

sudo nano /etc/systemd/system/redis-server.service

Nội dung như sau:

[Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli -a test@123 shutdown Restart=always [Install] WantedBy=multi-user.target

Ghi chú:

  • Nhớ đảm bảo redis-server, redis-cli trong thư mục/usr/local/bin
  • Nhớ đảm bảo tệp redis.conf trong thư mục /etc/redis
  • Dòng “Restart=always” => Đảm bảo mỗi khi redis-server chết sẽ tự khởi động lại. Nếu không muốn khởi động lại thì bỏ dòng này đi
  • Dòng “WantedBy=multi-user.target” => Đảm bảo redis-server được start ngay sau khi máy khởi động xong.
  • Dòng User với Group để xác định user chạy => Nếu có dòng này bạn phải tạo user và group redis như dưới. Không thì không cần.

Trong trường hợp bạn muốn chạy dịch vụ thông qua 1 user khác, bạn phải user và group redis như sau:

sudo adduser --system --group --no-create-home redis sudo mkdir /var/lib/redis sudo chown redis:redis /var/lib/redis sudo chmod 770 /var/lib/redis

Nếu bạn muốn service chạy tự động mỗi khi server khởi động lại sử dụng lệnh sau:

sudo systemctl enable redis-server

Bạn muốn bỏ chế độ chạy này thì dùng lệnh sau:

sudo systemctl disable redis-server

Cách lệnh sau để thao tác vơi dịch vụ:

sudo systemctl start redis-server sudo systemctl stop redis-server systemctl status redis-server sudo service redis-server start sudo service redis-server stop service redis-server status

Cấu hình Redis

Thông thường tệp cấu hình của Redis ở vị trí: /etc/redis/redis.conf. Bạn cần thay đổi gì thì sửa trực tiếp tệp này. Có hai cấu hình hay được thay đổi nhất đó là:

  • Cấu hình cho phép server khác có thể kết nối tới Redis: bind 127.0.0.1 -::1 Đổi thành: bind 0.0.0.0 -::1
  • Cấu hình yêu cầu Client phải xác thực: Uncomment cho dòng sau, mật khẩu foobared tùy bạn thay đổi cho phù hợp: requirepass foobared

Sau khi sửa xong thì restart Redis bằng lệnh:

sudo apt-get install build-essential libssl-dev wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xvzf redis-4.0.8.tar.gz cd redis-4.0.8 make sudo make install

0

Các lỗi gặp khi cài đặt Redis

Thường hay xảy ra khi bạn cài đặt theo cách thủ công hoặc do bạn thay đổi các configure nào đó. Chứ cài đặt và sử dụng các cấu hình mặc định thì rất khó xảy ra các lỗi kiểu này.

Redis can’t set maximum open files to 10032 because of OS error: Operation not permitted

Khi chạy redis service thấy okie, telnet tới cổng 6379 okie nhưng không thực hiện các lệnh được, kết nối bằng redis-cli cũng không được. Khi kiểm tra log của Redis (/var/log/redis/redis-server.log) thì thấy có dòng lỗi như sau: …

Sử dụng redis-cli thì kết nối được nhưng sử dụng Redis Desktop Manager hoặc ứng dụng kết nối thì lỗi

Tham khảo: https://stackoverflow.com/questions/19581059/misconf-redis-is-configured-to-save-rdb-snapshots

Lỗi này do Lỗi cấu hình cấu hình liên quan tới việc lưu RDB snapshots Vào redis-cli, sau đó đánh lệnh sau:

sudo apt-get install build-essential libssl-dev wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xvzf redis-4.0.8.tar.gz cd redis-4.0.8 make sudo make install

1

Lỗi không stop được Redis

Khi stop Redis rất lâu, khi check status thấy lỗi:

sudo apt-get install build-essential libssl-dev wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar xvzf redis-4.0.8.tar.gz cd redis-4.0.8 make sudo make install

2

Lỗi này do Redis không có quyền lưu dữ liệu xuống HDD. Nguyên nhân lỗi này thường do Redis không có quyền lưu dữ liệu. Có hai cách sửa:

Cách 1: Xem redis.service trong thư mục /lib/systemd/system hoặc /etc/systemd/system Tìm tệp config của Redis => /etc/redis/redis.conf Xem user và group chạy service này: User=redis Group=redis Mở tệp redis.conf xem “The working directory” với key là dir => dir /etc/redis Chuyển thư mục này sang thuộc quyền sở hữu của user redis: sudo chown redis:redis -R /etc/redis

Cách 2: Sửa tệp redis.service trong thư mục /lib/systemd/system hoặc /etc/systemd/system Bỏ hai dòng dưới để Redis chạy với user root. User=redis Group=redis

Kinh nghiệm sử dụng Redis

Một số lệnh thao tác với Redis-Cli

redis-cli là một công cụ giống như 1 Client cho phép người dùng gõ các lệnh để thao tác với Redis. Thường những người có nhiều kinh nghiệm sử dụng Redis họ đều nhớ hầu hết các lệnh này.