Cách cài Redis trên VPS Ubuntu và dùng làm bộ nhớ đệm
Hướng dẫn cài Redis trên VPS Ubuntu, cấu hình an toàn và kết nối ứng dụng để lưu cache có thời hạn. Kèm các bước kiểm tra, ví dụ Python và cách xử lý lỗi thường gặp.
- 8 phút đọc
- 0 lượt xem

CÔNG TY TNHH CÔNG NGHỆ INUX
Hướng dẫn cài Redis trên VPS Ubuntu, cấu hình an toàn và kết nối ứng dụng để lưu cache có thời hạn. Kèm các bước kiểm tra, ví dụ Python và cách xử lý lỗi thường gặp.

DNS propagation là quá trình các máy chủ DNS cập nhật thông tin tên miền sau khi bạn đổi cấu hình. Tìm hiểu nguyên nhân gây chậm và cách kiểm tra khi tên miền chưa trỏ đến website mới.
Khởi tạo tự động ngay sau khi thanh toán, chuyển khoản bằng mã QR, bật tắt và cài lại máy chủ trong trang quản lý.
Redis là một lựa chọn phổ biến để lưu dữ liệu tạm thời trong bộ nhớ, giúp ứng dụng lấy lại những thông tin thường dùng mà không phải truy vấn cơ sở dữ liệu liên tục. Trong bài viết này, bạn sẽ biết cách cài Redis trên VPS Ubuntu, giới hạn quyền truy cập và kết nối ứng dụng để sử dụng Redis cache đúng cách.
Redis là kho dữ liệu dạng key-value, thường được sử dụng để lưu dữ liệu trong RAM. Nhờ truy cập nhanh, Redis phù hợp với những dữ liệu có thể tạo lại khi cần, chẳng hạn kết quả truy vấn phổ biến, thông tin phiên đăng nhập, bộ đếm hoặc dữ liệu tạm trong quy trình xử lý.
Một luồng cache thường hoạt động như sau: ứng dụng kiểm tra dữ liệu trong Redis trước; nếu tìm thấy thì trả kết quả ngay; nếu chưa có thì đọc từ cơ sở dữ liệu, sau đó lưu bản sao vào Redis trong một khoảng thời gian. Cách này có thể giảm số lần đọc cơ sở dữ liệu, nhưng hiệu quả thực tế còn tùy ứng dụng, cách thiết kế cache và tài nguyên máy chủ.
Redis không thay thế cơ sở dữ liệu chính. Cache có thể bị xóa hoặc hết hạn, vì vậy ứng dụng cần có cách lấy lại dữ liệu gốc khi cache không còn. Không nên đưa mật khẩu, thông tin thanh toán hay dữ liệu nhạy cảm vào cache nếu chưa đánh giá yêu cầu bảo mật và thời gian lưu phù hợp.

Trước khi cài đặt, hãy đăng nhập VPS bằng tài khoản có quyền sudo. Nên cập nhật danh sách gói và các bản cập nhật hiện có:
sudo apt update
sudo apt upgrade -yKiểm tra phiên bản Ubuntu nếu cần:
lsb_release -aBạn cũng nên bảo đảm ứng dụng và Redis được đặt trên máy chủ có đủ tài nguyên cho nhu cầu thực tế. Redis lưu dữ liệu chủ yếu trong RAM; nếu dữ liệu cache vượt quá dung lượng bộ nhớ phù hợp, máy chủ có thể thiếu RAM hoặc phát sinh hành vi loại bỏ dữ liệu. Vì vậy, hãy theo dõi mức sử dụng sau khi triển khai thay vì mặc định rằng mọi dữ liệu đều có thể lưu trong cache.
Trên các bản Ubuntu có gói Redis trong kho mặc định, quá trình cài đặt cơ bản gồm các lệnh sau:
sudo apt install redis-server -yBật dịch vụ để Redis chạy ngay và tự khởi động sau khi VPS khởi động lại:
sudo systemctl enable --now redis-serverKiểm tra trạng thái dịch vụ:
sudo systemctl status redis-serverNếu trạng thái hiển thị active (running), dịch vụ đang chạy. Nhấn q để thoát màn hình trạng thái. Bạn cũng có thể kiểm tra phiên bản Redis bằng redis-server --version. Phiên bản được cài phụ thuộc vào kho gói và phiên bản Ubuntu đang sử dụng. Với nhu cầu thông thường, hãy bắt đầu bằng gói được phân phối qua kho Ubuntu; nếu ứng dụng yêu cầu phiên bản cụ thể, cần kiểm tra khả năng tương thích trước khi thay đổi nguồn cài đặt.
Tiếp theo, gửi lệnh kiểm tra đến Redis:
redis-cli pingKết quả PONG cho biết Redis phản hồi trên máy chủ. Nếu lệnh không kết nối được, hãy kiểm tra trạng thái dịch vụ và nhật ký:
sudo journalctl -u redis-server --no-pager -n 50
Trên VPS chạy ứng dụng cùng máy, cách đơn giản và an toàn hơn là chỉ cho Redis nhận kết nối từ máy cục bộ. Redis thường dùng tệp cấu hình /etc/redis/redis.conf. Mở tệp bằng trình soạn thảo, chẳng hạn:
sudo nano /etc/redis/redis.confTìm dòng bind và bảo đảm Redis chỉ lắng nghe trên địa chỉ loopback, thường là:
bind 127.0.0.1 ::1Giữ chế độ bảo vệ mặc định nếu không có lý do cụ thể để thay đổi. Không mở cổng Redis 6379 ra Internet. Nếu ứng dụng chạy ở máy khác, hãy giới hạn truy cập bằng mạng riêng hoặc tường lửa theo địa chỉ nguồn, đồng thời cấu hình xác thực; không nên chỉ dựa vào mật khẩu để bảo vệ một dịch vụ đang công khai.
Để yêu cầu xác thực, có thể đặt mật khẩu dài, ngẫu nhiên và không dùng lại mật khẩu của dịch vụ khác. Trong tệp cấu hình, thêm hoặc cập nhật dòng sau bằng một mật khẩu phù hợp:
requirepass MAT_KHAU_DAI_NGAU_NHIENHãy thay phần ví dụ bằng mật khẩu thật, lưu tệp và khởi động lại dịch vụ:
sudo systemctl restart redis-serverTừ đây, lệnh redis-cli ping không kèm xác thực có thể trả về lỗi yêu cầu xác thực. Kiểm tra bằng cách nhập mật khẩu tương tác:
redis-cli
AUTH MAT_KHAU_DAI_NGAU_NHIEN
PINGKhông đưa mật khẩu thật vào bài viết, ảnh chụp màn hình hay kho mã nguồn. Với ứng dụng, nên lưu thông tin kết nối trong biến môi trường hoặc hệ thống quản lý bí mật phù hợp, đồng thời giới hạn quyền đọc tệp cấu hình của ứng dụng.

Ứng dụng cần một thư viện Redis tương ứng với ngôn ngữ đang dùng. Ví dụ dưới đây dùng Python và thư viện redis:
pip install redisTạo kết nối tới Redis trên cùng VPS bằng địa chỉ loopback. Thay mật khẩu mẫu bằng biến môi trường trong ứng dụng thực tế:
import os
import redis
r = redis.Redis(
host='127.0.0.1',
port=6379,
password=os.environ.get('REDIS_PASSWORD'),
decode_responses=True,
)
print(r.ping())Nếu kết quả là True, ứng dụng đã kết nối được. Trường hợp bạn chưa bật xác thực, có thể bỏ tham số password; tuy vậy, cần giữ Redis không thể truy cập từ mạng công cộng.
Ví dụ sau minh họa cách lưu một kết quả truy vấn dạng JSON trong 300 giây. Khi có yêu cầu, ứng dụng kiểm tra cache trước; chỉ khi không có dữ liệu mới gọi hàm lấy dữ liệu từ cơ sở dữ liệu:
import json
key = 'product:42'
cached = r.get(key)
if cached is not None:
product = json.loads(cached)
else:
product = load_product_from_database(42)
r.set(key, json.dumps(product), ex=300)ex=300 đặt thời hạn 300 giây cho key. Hết thời hạn, Redis tự loại bỏ key và ứng dụng có thể lấy lại dữ liệu nguồn. Hãy thay load_product_from_database bằng hàm thực tế của bạn. Tránh lưu kết quả không giới hạn thời gian nếu dữ liệu có thể cũ hoặc tăng dần theo số lượng người dùng.
Chọn cache cho dữ liệu được đọc thường xuyên, ít thay đổi và có thể tạo lại. Một số nguyên tắc hữu ích:
product:42 hoặc user:15:profile, để dễ theo dõi và xóa đúng dữ liệu.Nếu Redis chỉ dùng làm cache, có thể cân nhắc thiết lập giới hạn bộ nhớ và chính sách loại bỏ key trong cấu hình. Ví dụ, maxmemory đặt ngưỡng bộ nhớ và maxmemory-policy allkeys-lru cho phép Redis loại bỏ các key ít được sử dụng gần đây khi cần chỗ. Không sao chép một ngưỡng tùy ý: hãy chọn mức phù hợp với RAM VPS, phần bộ nhớ dành cho hệ điều hành và tải ứng dụng. Sau khi đổi cấu hình, khởi động lại dịch vụ và theo dõi hoạt động thực tế.
Nếu ứng dụng báo không thể kết nối, hãy kiểm tra lần lượt:
sudo systemctl status redis-server.redis-cli ping hoặc xác thực trước nếu đã đặt mật khẩu.host, cổng 6379 và mật khẩu trong ứng dụng có khớp với Redis không.sudo journalctl -u redis-server --no-pager -n 50.Nếu ứng dụng kết nối thành công nhưng dữ liệu thường xuyên bị thiếu, hãy kiểm tra thời hạn key, quy tắc xóa cache và chính sách bộ nhớ. Cache miss không nhất thiết là lỗi: key có thể chưa được tạo, đã hết hạn hoặc bị loại bỏ. Có thể dùng redis-cli INFO memory để xem thông tin bộ nhớ, nhưng không nên thực hiện lệnh xóa toàn bộ dữ liệu trên hệ thống đang chạy nếu chưa hiểu rõ ảnh hưởng.
Cài Redis trên VPS Ubuntu tương đối nhanh, nhưng để dùng hiệu quả cần chú ý cả kết nối, bảo mật và vòng đời dữ liệu cache. Hãy bắt đầu với Redis chỉ lắng nghe trên máy cục bộ, đặt thời hạn cho key, kiểm tra phản hồi của ứng dụng và theo dõi RAM sau khi đưa vào sử dụng.
Nếu bạn cần một môi trường VPS để triển khai ứng dụng và Redis, VibeVPS có các gói VPS AMD EPYC Gen 3 từ 81.000đ/tháng. Bạn có thể tham khảo cấu hình phù hợp với tải thực tế trước khi lựa chọn.
Tìm hiểu cách đánh giá dung lượng, hiệu năng, lưu trữ và vận hành để chọn máy chủ riêng chạy database phù hợp với khối lượng công việc và kế hoạch phát triển.
MySQL và MariaDB có chung nguồn gốc nhưng khác nhau về định hướng phát triển, tính năng và khả năng tương thích. Bài viết giúp bạn so sánh và chọn hệ quản trị cơ sở dữ liệu phù hợp cho website hoặc ứng dụng.