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. Show Mục lục Giới thiệu về RedisRedis (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
Các kiểu dữ liệu trong Redis
Persistent redisBê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:
Cài đặt trực tiếpVề 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ôngTrô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ú:
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 RedisThô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à:
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 RedisThườ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 permittedKhi 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ỗiTham 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 RedisKhi 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 RedisMột số lệnh thao tác với Redis-Cliredis-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. |