Tốc Độ Đọc/ghi Giữa RAM và Ổ Cứng
RAM (Bộ nhớ truy cập ngẫu nhiên) và ổ cứng (như HDD hoặc SSD) có sự khác biệt rất lớn về tốc độ đọc/ghi, do chúng dựa trên các công nghệ và nguyên lý vật lý hoàn toàn khác nhau. Tốc độ truy cập của RAM nhanh hơn nhiều so với ổ cứng.
- RAM: Dữ liệu được đọc/ghi trực tiếp từ các chip bộ nhớ mà CPU có thể truy cập một cách nhanh chóng. Thời gian chờ của RAM thường nằm trong phạm vi vài chục nanogây (ns), tốc độ truyền dữ liệu có thể đạt hàng chục đến hàng trăm GB mỗi giây.
- Ổ cứng HDD: Là thiết bị lưu trữ dựa trên đĩa quay, việc đọc/ghi dữ liệu yêu cầu di chuyển đầu đọc đến vị trí chính xác, quá trình này tương đối chậm. Thời gian chờ trung bình của HDD thường nằm trong khoảng vài mili giây (ms), tốc độ truyền dữ liệu thông thường vào khoảng vài chục đến vài trăm MB mỗi giây.
- Ổ cứng SSD: Mặc dù SSD dựa trên flash và nhanh hơn nhiều so với HDD, nhưng vẫn thường chậm hơn RAM. Thời gian chờ của SSD thường nằm trong khoảng vài chục đến vài trăm microgiây (µs), tốc độ truyền dữ liệu có thể đạt vài trăm MB đến vài GB mỗi giây.
Nói chung, tốc độ của RAM nhanh hơn khoảng 10.000 đến 100.000 lần so với HDD và khoảng 100 đến 1.000 lần so với SSD. Các con số này chỉ là ước tính thô, hiệu suất thực tế sẽ phụ thuộc vào phần cứng cụ thể và hoạt động đang diễn ra.
Vì vậy, khi bạn so sánh các hệ thống như Redis (cơ sở dữ liệu trong bộ nhớ) và MySQL (thường lưu trữ trên ổ HDD hoặc SSD), Redis có lợi thế đáng kể về tốc độ truy cập dữ liệu, điều này khiến nó được sử dụng rộng rãi trong các tình huống yêu cầu tốc độ đọc/ghi cao (như bộ đệm).
Cấu Hình Mạng Trên Linux
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" UUID="e75b83e9-2f9d-4c2e-9e7b-a83f9d2c2e4f" DEVICE="eth0" ONBOOT="yes" #Địa chỉ IP IPADDR="192.168.1.10" #Cổng mặc định GATEWAY="192.168.1.1" #Máy chủ DNS DNS1="8.8.8.8"
Cài Đặt Redis Và Khởi Động Dịch Vụ
# Cài đặt môi trường lập trình C gcc [root@server ~]# yum install gcc # Giải nén gói Redis [root@server opt]# tar -zxvf redis-6.2.6.tar.gz # Chuyển đến thư mục chứa mã nguồn Redis [root@server opt]# cd redis-6.2.6/ # Biên dịch Redis [root@server redis-6.2.6]# make # Cài đặt Redis [root@server redis-6.2.6]# make install # Sao chép file cấu hình Redis vào thư mục /etc/ [root@server redis-6.2.6]# cp redis.conf /etc/redis.conf # Khởi động Redis server [root@server bin]# /usr/local/bin/redis-server /etc/redis.conf
Sử Dụng Redis-cli
Kết Nối Đến Redis Server
Có hai cách để kết nối tới Redis Server:
# Cách 1: Kết nối không chỉ định cổng, tức là sử dụng cổng mặc định 6379 [root@server bin]# redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> quit # Cách 2: Kết nối bằng cách chỉ định cổng (phù hợp khi cổng đã được thay đổi) [root@server bin]# redis-cli -p 6379 127.0.0.1:6379> ping PONG 127.0.0.1:6379> quit
Đóng Redis Server
Có ba cách để đóng Redis Server:
# Cách 1: Không chỉ định cổng, mặc định sẽ đóng cổng 6379 [root@server bin]# redis-cli shutdown # Cách 2: Chỉ định cổng để đóng [root@server bin]# redis-cli -p 6379 shutdown # Cách 3: Sử dụng lệnh bên trong Redis CLI để đóng [root@server bin]# redis-cli 127.0.0.1:6379> shutdown
Thao Tác Với Redis Keys
Xóa Redis Key Theo Mẫu
Lệnh del không hỗ trợ mẫu, cần sử dụng đường ống để xử lý:
# Sử dụng đường ống để xóa các key theo mẫu redis-cli keys "order:*" | xargs redis-cli del
Kiểm Tra Sự Tồn Tại Của Một Key
Dùng lệnh EXISTS để kiểm tra xem một key có tồn tại hay không:
EXISTS user:12345
Nếu key user:12345 tồn tại, lệnh sẽ trả về 1; nếu không tồn tại, sẽ trả về 0.
Quản Lý Dữ Liệu Trong Redis
Chức Năng TTL
TTL là viết tắt của "Time to Live", nghĩa là "Thời gian sống".
Khôi Phục File Backup dump.rdb
Trong Redis, nếu bạn muốn khôi phục lại dữ liệu từ file backup dump.rdb, cần đảm bảo rằng file này được tạo và lưu trữ đúng cách.
# Sửa file cấu hình Redis [root@server ~]# vi /etc/redis.conf # Thay đổi vị trí lưu trữ file dump.rdb dir /backup/ # Lệnh tạo file dump.rdb thủ công save
AOF Persistence
Trong file cấu hình redis.conf, thuộc tính save dùng để cấu hình tự động chụp ảnh (snapshotting). Nếu bạn đặt save "", thì Redis sẽ không tự động tạo snapshot dựa trên thời gian và số lượng thay đổi. Tuy nhiên, khi sử dụng lệnh SHUTDOWN, Redis vẫn sẽ thực hiện một lần RDB snapshot để đảm bảo dữ liệu được lưu trữ an toàn.
# Cấu hình AOF persistence appendonly yes appendfilename "appendonly.aof"
Cluster Redis
Tạo Cluster Redis
Để tạo cluster Redis, bạn cần sử dụng lệnh sau:
redis-cli --cluster create 192.168.1.10:6379 192.168.1.11:6379 192.168.1.12:6379 --cluster-replicas 1
Lệnh trên sẽ tạo một cluster Redis với ba nút chính và mỗi nút có một bản sao.
Quản Lý Slot Trong Redis Cluster
Bạn có thể quản lý slot trong Redis cluster bằng các lệnh sau:
# Kiểm tra slot của một key 192.168.1.10:6379> CLUSTER KEYSLOT k1 # Đếm số lượng key trong một slot 192.168.1.10:6379> CLUSTER COUNTKEYSINSLOT 12345 # Lấy danh sách các key trong một slot 192.168.1.10:6379> CLUSTER GETKEYSINSLOT 12345 10
ACL Trong Redis
Liệt Kê Tất Cả ACL
127.0.0.1:6379> acl list
Lệnh trên sẽ liệt kê tất cả các quy tắc ACL hiện có.
Thêm Người Dùng
127.0.0.1:6379> acl setuser newuser on >password ~* +@all
Lệnh trên sẽ thêm một người dùng mới với tên là newuser, bật trạng thái, thiết lập mật khẩu, cho phép truy cập tất cả các key và thực hiện tất cả các lệnh.
Xóa Người Dùng
127.0.0.1:6379> acl deluser olduser
Lệnh trên sẽ xóa người dùng olduser.