Redis là hệ thống lưu trữ dữ liệu dạng key-value trên bộ nhớ ram của máy chủ, redis thường được sử dụng kết hợp lưu trữ các dữ liệu cần truy xuất với tốc độ nhanh.

Hỗ trợ nhiều kiểu cấu trúc dữ liệu phổ biến (hash, list, set, sorted set, string) cùng với công nghệ đọc ghi dữ liệu được thiết kế và tối ưu hiệu suất tốt hơn memcached nên Redis thường được sử dụng làm hệ thống lưu trữ cache-bộ nhớ đệm cho các ứng dụng cần truy xuất dữ liệu với tốc độ phản hồi nhanh như: website với hàng triệu lượt truy cập, các dịch vụ webserive, giảm tải hệ thống database cho các kiến trúc phần mềm lớn.

Ngoài việc cung cấp hiệu xuất truy xuất dữ liệu nhanh, Redis cũng hỗ trợ lưu trữ nội dung dữ liệu nosql với độ bảo mật và sửa lỗi cao, cùng với cơ chế lưu trữ backup trên ổ đĩa cứng như các hệ quản trị dữ liệu khác.

Là một phần mềm được thiết kế để hỗ trợ cho máy chủ linux nên việc cài đặt Redis trên Centos, Ubuntu, Debian … rất dễ dàng, bài viết sau hướng dẫn bạn cách cài đặt Redis cũng như cấu hình persistence module

Hướng dẫn cài đặt Redis trên linux:

Bạn cần cập nhật các gói update của hệ điều hành mình đang sử dụng bằng các lệnh sau:

Lưu ý cần sử dụng quyền root để có thể cài đặt các gói phần mềm kèm theo

Đối với Ubuntu/Debian
apt-get update
apt-get upgrade

Đối với Centos
yum update

Cài đặt chỉ thị cài đặt cho Ubuntu/Debian

apt-get install software-properties-common
add-apt-repository ppa:chris-lea/redis-server

Cài đặt Redis cho Ubuntu và Debian qua lệnh

apt-get update
apt-get install redis-server

Cài đặt Redis cho Centos

yum install epel-release
yum install redis
systemctl start redis

Kiểm tra service Redis có hoạt động sau khi cài

Trên ubuntu
//Khởi động dịch vụ nếu nó không chạy
service redis start

//Kiểm tra tình trạng dịch vụ
service resis status

//Trên centos
//Khởi động dịch vụ nếu nó không chạy
systemctl start redis

//Kiểm tra tình trạng dịch vụ
systemctl status redis

Kết quả tương tự như đoạn code bên dưới là ok.

● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Fri 2018-06-22 02:18:26 UTC; 8s ago
 Main PID: 18879 (redis-server)
   CGroup: /system.slice/redis.service
           └─18879 /usr/bin/redis-server 127.0.0.1:6379

Jun 22 02:18:26 myblog systemd[1]: Started Redis persistent key-value database.
Jun 22 02:18:26 myblog systemd[1]: Starting Redis persistent key-value database...

Test kết nối với redis bằng lệnh sau:

redis-cli
127.0.0.1:6379> PING
PONG

//redis mặc định chạy ở port 6379

Kích hoạt Redis chạy tự động mỗi khi boot máy

systemctl enable redis

Cấu hình Redis thay thế Memcached

Đầu tiên chúng ta cần biết Memcached là gì? Memcached thì đơn giản nhất, chỉ có dạng key-value, tất cả dữ liệu lưu trong RAM. Và lưu ý là Memcached chỉ là tầng cache, ko có tính persistent, tức là khó backup dữ liệu, và dữ liệu có thể mất (cái này là tỉ lệ eviction/reclaim xảy ra khi full bộ nhớ, memcached dùng thuật toán đẩy các key ít dùng hoặc key cũ nhất ra). Ngoài ra memcached còn có khái niệm slab, chunk, chunk grow factor, CAS v.v.

Để cấu hình Redis thay thế Memcached chúng ta không cần tính chất Persistent để đảm bảo tốc độ truy suất và phản hồi nhanh.

Để cải thiện hiệu xuất của Redis chúng ta cần tùy chỉnh Linux với một số tùy chọn sau:

Đặt cài đặt bộ nhớ overcommit của Linux thành 1:

sudo sysctl vm.overcommit_memory=1

Điều này ngay lập tức thay đổi thiết lập bộ nhớ overcommit. Để thực hiện thay đổi vĩnh viễn, hãy thêm vm.overcommit_memory = 1vào /etc/sysctl.conf:

vm.overcommit_memory = 1

Thay đổi password cho redis để tăng khả năng bảo mật: File cấu hình của redis được lưu trữ tại đường dẫn sau:/etc/redis/redis.conf hoặc /etc/redis.config, thay đối password cho hệ thống mới hoặc cập nhật mật khẩu mới bằng cách sửa đổi các dòng lệnh sau:

Mở file cấu hình Redis
nano /etc/redis/redis.config hoặc nano /etc/redis.config

bỏ dấu "#" và đặt password tại dòng
#requirepass foobared

Thay foobared bằng password tương ứng

Khởi động lại redis và test mật khẩu

# khởi động lại redis với cấu hình mới 
service redis-server restart
-- or --
systemctl restart redis
#test dịch vụ Redis với mật khẩu mới
redis-cli

--- hiển thị kết quả vầy là đúng
127.0.0.1:6379>
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.

-- đăng nhập với password mới tạo
127.0.0.1:6379> auth conmeohaman
OK
127.0.0.1:6379>

Đổi port cho redis: mặc định redis chạy trên port 6379, để thay đổi port chúng ta mở file config và thay đổi dòng sau:

port 6379

Sau khi thay đổi port nhớ cập nhật firewall

Thêm ip connect cho redis: biến redis thành 1 server riêng phục vụ cho hệ thống lưu trữ hoặc cache, chúng ta cần cung cấp remote address bằng cách tạo lọc ip kết nối

bind 127.0.0.1 ip_may_can_ket_noi

Mọi thay đổi redis cần khởi động lại dịch vụ để có hiệu lực

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.