Phần 1: Cài đặt redis cơ bản + Turning redis.

Seri Redis của chúng ta gồm những phần sau: Phần 1: Cài đặt redis cơ bản + Turning redis. Phần 2: Lệnh quản trị redis cơ bản Phần 3: Bảo mật cho redis. (redis security) Phần 4: Access List Redis (tính năng mới ở bản 6) Phần 5: Các mô hình Redis replication Phần 6:

Seri Redis của chúng ta gồm những phần sau:

Phần 1: Cài đặt redis cơ bản + Turning redis.
Phần 2: Lệnh quản trị redis cơ bản
Phần 3: Bảo mật cho redis. (redis security)
Phần 4: Access List Redis (tính năng mới ở bản 6)
Phần 5: Các mô hình Redis replication
Phần 6: Cài đặt Redis Master-Salve
Phần 7: Cài đặt Redis Setinel
Phần 8: Cài đặt Redis Cluster
Phần 9: Di chuyển data từ redis đơn sang cluster.
Phần 10: Data type trong Redis, một vài ví dụ sử dụng (String/hash/sort/list/queue/pub-sub....).
Phần 11: Một số lỗi thường gặp khi quản trị hệ thống Redis.
Phần 12: Continue...

(Các phần của mình viết sẽ khó hiểu và phức tạp hơn trên mạng 1 chút, vì sẽ chuyên sâu cho System+Dev quản trị redis)

Phần 1: Cài đặt redis cơ bản + Turning redis.

1.1 Cài đặt:

(Sao không cài yum hoặc apt mà lại cài từ tar.gz: Vì dễ quản lý file và config về sau, thuận tiện cho việc backup data file/config/logs/quản lý phân vùng lưu trữ, upgrade version… bla bla)

Bước 1: Tải redis từ trang chủ: https://redis.io/download . Bản hiện tại đến 2022/02 là 6.2.6, các bạn cứ chọn bản mới nhất mà cài. Vì redis build rất ổn định.

# yum install gcc wget -y

# mkdir -p /opt/setup

# cd /opt/setup

# curl -k -O https://download.redis.io/releases/redis-6.2.6.tar.gz

# tar xzf redis-6.2.6.tar.gz

# cd redis-6.2.6

# make

# make install

Khi make install, câu lệnh sẽ thực hiện copy các file chạy redis gồm (redis-server , redis-benchmark , redis-cli ) vào thư mục /usr/local/bin/

Bước 2: Cài đặt các thư mục riêng cho redis, để quản lý về sau ( như: data , conf, log)

# mkdir -p /opt/redis/conf

# mkdir -p /opt/redis/data

# mkdir -p /opt/redis/log

# cd /opt/setup/redis-6.2.6/utils/

# vim install_server.sh (ta comment lại dòng 82 vì có exit 1 không tương thích với systemd - lỗi ko cần thiết)

Thực hiện chạy file, và khai báo như sau

$ ./install_server.sh

Tắt bật redis:

# /etc/init.d/redis_6379 status
# /etc/init.d/redis_6379 stop
# /etc/init.d/redis_6379 start
# Bạn nào muốn dùng systemd, Đọc. Phần 3: Bảo mật cho redis. (redis security) nhé.

Lệnh chạy cơ bản
vào redis bằng lệnh

# redis-cli ping                           #(Dùng để kiểm tra redis alive)
# redis-cli set hello-world awesome1       #(đặt key hello-world có data value = awesome)
# redis-cli get hello-world                #(lấy giá trị value của key ra)
# redis-cli info                           #(xem thông tin status của redis)
# redis-cli config get                     #(Xem toàn bộ config của redis đang chạy)
# redis-cli monitor                        #(GIÁM SÁT các câu lệnh đang chạy real-time - RẤT hay)
# redis-cli client list                    #(Kiểm tra xem có bao nhiêu client, ip client đang kết nối, client đang dùng lệnh gì.)
# redis-cli info clients                   #(Xem số client đang kết nối tới redis server)

Ngoài việc gõ trực tiếp command trên unix. Ta có thể vào redis-cli để gõ các lệnh như sau:

[[email protected] ~]# redis-cli 
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET hello-world awmsome2
OK
127.0.0.1:6379> GET hello-world
"awmsome2"

1.2: Turning redis:

P1: Enable vm.overcommit_memory

# vim /etc/sysctl.conf
vm.overcommit_memory=1
net.core.somaxconn=65535
#sudo sysctl --system

chạy lệnh sysctl vm.overcommit_memory=1
Khi ghi dữ liệu từ RAM xuống disk, Redis sử dụng các tiến trình con. Theo mặc định, tiến trình con này cần memory tương đương tiến trình mẹ, do nó có chứa dữ liệu tương đương. Điều này dẫn tới OS không đủ RAM cho việc ghi DB xuống Disk này > lỗi.
Tuy nhiên Linux có hỗ trợ Copy-on-write, nghĩa là chỉ cần cấp memory cho những gì tiến trình con khác với tiến trình mẹ, phần giống nhau thì dùng chung memory cho tiết kiệm. Để bật nó thì cần set overcommit_memory = 1

P2: net.core.somaxconn (tăng hàng đợi tối đa của linux)

sysctl -w net.core.somaxconn=65535
cat /proc/sys/net/core/somaxconn
65535

P3: Set never transparent_hugepage

Giải thích: https://kipalog.com/posts/Tinh-nang-Transparent-HugePage-trong-RHEL6-va-anh-huong

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# echo never > /sys/kernel/mm/transparent_hugepage/enabled


# vim /etc/rc.local (thêm vào cuối file rc.local để mỗi lần khởi động lại Linux, hugpage lại chuyển thành never)
echo never > /sys/kernel/mm/transparent_hugepage/enabled

P4: Tăng connection kết nối

Mặc định redis seting maxclients kết nối đồng thời là 10000, nếu coder tốt thì khi mở kết nối xong sẽ gọi lệnh close (cả hệ thống lớn chắc ko đến 100 kết nối đồng thời). Vẫn để phòng trường hợp quá connection khi bị miss code ở đoạn nào đó. Ta có thể tăng Maxclients lên.
Cách 1: Thay trong redis-cli

127.0.0.1:6379> CONFIG GET MAXCLIENTS
"10000"
127.0.0.1:6379> CONFIG SET MAXCLIENTS 100000
OK (thực hiện tăng maxclient tạm thời)
127.0.0.1:6379> CONFIG REWRITE
OK (Thực hiện ghi đè config hiện tại / vĩnh viễn)

Cách 2: Thay trong config

vim /opt/redis/conf/6379.conf
maxclients 100000

Mời các bạn đón đọc: Phần 2: Lệnh quản trị redis cơ bản

(Kiến thức người viết bài có thể có góc nhìn hẹp, xin các bạn góp ý đóng góp xây dựng bài.)

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ