1. Tải về và giải nén Source Code Redis từ GitHub
Chúng ta sẽ lấy mã nguồn Redis bản ổn định mới nhất (stable release) trực tiếp từ kho GitHub chính thức thay vì dùng package manager để đảm bảo tính mới nhất và khả năng tùy biến tối đa.
Thư mục đích là /usr/local/src, nơi lưu trữ mã nguồn hệ thống chuẩn trên Linux.
Tải về file source
Sử dụng git clone để lấy toàn bộ repository, sau đó checkout về tag bản phát hành ổn định nhất (ví dụ 7.2.4 hoặc mới hơn tại thời điểm chạy).
cd /usr/local/src
git clone https://github.com/redis/redis.git
cd redis
git checkout $(git describe --tags --abbrev=0)
Kết quả mong đợi: Bạn sẽ thấy thư mục redis được tạo, lệnh git checkout trả về tên tag (ví dụ: 7.2.4) và bạn đang đứng trong thư mục source code.
Giải nén (nếu dùng tarball) hoặc xác nhận cấu trúc
Nếu bạn dùng git clone thì bước này không cần giải nén, nhưng cần kiểm tra file Makefile có tồn tại.
ls -lh Makefile src/redis-server src/redis-cli
Kết quả mong đợi: Liệt kê các file Makefile và source code của redis-server, redis-cli.
2. Cấu hình Makefile để tối ưu hóa trên x86_64
Trước khi biên dịch, chúng ta cần chỉnh sửa Makefile để kích hoạt các flag tối ưu hóa CPU cho kiến trúc x86_64 (SSE2) và biên dịch với gcc version cao có sẵn trên Ubuntu 24.04.
Kiểm tra và thiết lập biến môi trường
Ubuntu 24.04 mặc định dùng gcc rất mới, Redis build script cần được chỉ định rõ để tránh cảnh báo không cần thiết và tận dụng tối đa cache của CPU.
export CC=gcc
export CFLAGS="-O3 -march=native -mtune=native"
Kết quả mong đợi: Biến môi trường được set, không có lỗi nào xuất hiện. Các flag này giúp redis-server chạy nhanh hơn đáng kể trên phần cứng hiện đại.
Biên dịch Redis
Chạy lệnh make để biên dịch toàn bộ project. Quá trình này sẽ tạo ra các binary file trong thư mục src/.
make
Kết quả mong đợi: Terminal hiển thị dòng "Hint: If you want to install redis, run make install" và không có dòng nào bắt đầu bằng "error:" hoặc "fatal error:".
Thực thi Unit Test (Redis Test Suite)
Đây là bước quan trọng nhất để đảm bảo binary mới biên dịch hoạt động chính xác trên môi trường Ubuntu 24.04 trước khi cài đặt vào production.
make test
Kết quả mong đợi: Một loạt các test case chạy qua, cuối cùng hiển thị dòng [ OK ] hoặc ALL TESTS PASSED. Nếu có lỗi (FAIL), bạn cần kiểm tra lại cấu hình hoặc thư viện hệ thống.
3. Cài đặt Redis vào thư mục hệ thống
Sau khi biên dịch và test thành công, chúng ta sẽ copy các binary file, thư viện và script vào các thư mục chuẩn của hệ thống để có thể chạy lệnh redis-server và redis-cli từ bất kỳ đâu.
Thực thi lệnh cài đặt
Lệnh make install sẽ copy các file vào /usr/local/bin, /usr/local/include, và /usr/local/lib.
sudo make install
Kết quả mong đợi: Các thông báo "Copying files to /usr/local/bin" và không có lỗi. Bạn cần nhập mật khẩu sudo khi được yêu cầu.
Verify kết quả cài đặt
Kiểm tra xem các binary đã được thêm vào PATH và có thể gọi trực tiếp.
redis-server --version
redis-cli --version
Kết quả mong đợi: Cả hai lệnh đều trả về phiên bản Redis vừa cài đặt (ví dụ: Redis server v7.2.4).
4. Tạo và cấu hình file redis.conf
Để chuẩn bị cho phần tiếp theo (Redis Cluster), chúng ta cần một file cấu hình redis.conf tùy chỉnh. Mặc định Redis không chạy như một dịch vụ (daemon) và cần cấu hình rõ ràng về bảo mật và network.
Copy template cấu hình
Chuyển file mẫu redis.conf.dist (có trong thư mục source) về thư mục cấu hình chuẩn /etc/redis/.
sudo mkdir -p /etc/redis
sudo cp /usr/local/src/redis/redis.conf /etc/redis/redis.conf
Kết quả mong đợi: File /etc/redis/redis.conf được tạo ra.
Chỉnh sửa cấu hình cơ bản cho Node Redis
Chúng ta sẽ sửa file cấu hình để tắt chế độ daemon (để dễ quản lý bằng systemd sau này), mở cổng 6379, và cấu hình bind address. Dưới đây là nội dung file cấu hình hoàn chỉnh cho bước khởi tạo cluster.
Đường dẫn file: /etc/redis/redis.conf
# File: /etc/redis/redis.conf
# Redis Cluster Node Configuration Template
# Chạy ở chế độ foreground (không daemon) để systemd quản lý
daemonize no
# File log
loglevel notice
logfile /var/log/redis/redis.log
# Dữ liệu lưu trữ
dir /var/lib/redis
# Bind address: Thay đổi IP này cho từng node trong phần sau
bind 0.0.0.0
protected-mode no
# Cổng chính
port 6379
# Cluster configuration
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.1.10
cluster-announce-port 6379
cluster-announce-bus-port 16379
# Bảo mật cơ bản
requirepass "RedisClusterSecurePass123"
masterauth "RedisClusterSecurePass123"
# Persistence (AOF)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
Kết quả mong đợi: File /etc/redis/redis.conf đã được ghi đè với nội dung trên. Lưu ý: Bạn sẽ cần tạo thư mục /var/log/redis và /var/lib/redis và cấp quyền cho user redis (sẽ làm trong phần tiếp theo) để file chạy được.
Verify file cấu hình
Sử dụng redis-server để kiểm tra xem file cấu hình có cú pháp hợp lệ hay không mà không cần chạy server thật.
redis-server /etc/redis/redis.conf --test-memory 0
Kết quả mong đợi: Không có lỗi cú pháp (syntax error) nào xuất hiện. Nếu file cấu hình sai, terminal sẽ in dòng lỗi chi tiết.
Điều hướng series:
Mục lục: Series: Triển khai Database Caching với Redis Cluster và Ubuntu 24.04
« Phần 1: Chuẩn bị môi trường Ubuntu 24.04 và kiến thức nền tảng về Redis Cluster
Phần 3: Cấu hình mạng và bảo mật cơ bản cho từng node Redis »