Kết Nối
CLI
redis-cli redis-cli -h 127.0.0.1 -p 6379 redis-cli -a password -n 2 redis-cli --tls -u rediss://user:pass@host:6380
Kết Nối Driver (Python)
import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('key', 'value') print(r.get('key'))
Thông Tin Server
PING -- returns PONG INFO server -- server details INFO memory -- memory usage DBSIZE -- number of keys in current db
String
Thao Tác Cơ Bản
SET name "Alice" GET name SET counter 100 MSET a 1 b 2 c 3 MGET a b c
Thao Tác Số
INCR counter -- 101 INCRBY counter 10 -- 111 DECR counter -- 110 DECRBY counter 5 -- 105 INCRBYFLOAT price 2.5
Lệnh String
SET key valGán giá trị string
GET keyLấy giá trị string
SETNX key valGán chỉ khi key chưa tồn tại
SETEX key sec valGán với thời gian hết hạn (giây)
APPEND key valNối thêm vào giá trị hiện tại
STRLEN keyĐộ dài giá trị string
List
Thao Tác List
LPUSH queue "first" RPUSH queue "last" LRANGE queue 0 -1 -- all elements LPOP queue RPOP queue
Lệnh List
LPUSH / RPUSHĐẩy vào đầu / cuối list
LPOP / RPOPLấy từ đầu / cuối list
LRANGE key start stopLấy dải phần tử
LLEN keyĐộ dài list
LINDEX key idxPhần tử tại vị trí
LREM key count valXóa count lần xuất hiện của val
BLPOP key timeoutLấy chặn từ đầu list (dùng cho queue)
Set & Sorted Set
Thao Tác Set
SADD tags "python" "redis" "docker" SMEMBERS tags SISMEMBER tags "python" -- 1 (true) SREM tags "docker" SCARD tags -- count
Phép Toán Tập Hợp
SUNION set1 set2 -- union SINTER set1 set2 -- intersection SDIFF set1 set2 -- difference
Thao Tác Sorted Set
ZADD leaderboard 100 "Alice" 85 "Bob" ZRANGE leaderboard 0 -1 WITHSCORES ZREVRANGE leaderboard 0 2 ZSCORE leaderboard "Alice" ZRANK leaderboard "Alice" -- 0-based rank
Lệnh Sorted Set
ZADD key score memberThêm thành viên với điểm số
ZRANGE key start stopDải theo thứ hạng (thấp đến cao)
ZREVRANGE key start stopDải theo thứ hạng (cao đến thấp)
ZINCRBY key incr memberTăng điểm số thành viên
ZRANGEBYSCORE key min maxDải theo giá trị điểm số
ZCARD keySố lượng thành viên
Hash
Thao Tác Hash
HSET user:1 name "Alice" age 30 HGET user:1 name HGETALL user:1 HMSET user:2 name "Bob" age 25 HMGET user:1 name age
Lệnh Hash
HSET key field valGán trường hash
HGET key fieldLấy trường hash
HGETALL keyLấy tất cả trường và giá trị
HDEL key fieldXóa trường hash
HEXISTS key fieldKiểm tra tồn tại trường
HINCRBY key field nTăng giá trị trường
HKEYS keyTất cả tên trường
HLEN keySố lượng trường
Key & Hết Hạn
Lệnh Key
KEYS patternTìm key khớp mẫu (chậm)
SCAN cursor MATCH patDuyệt key dần dần (an toàn)
EXISTS keyKiểm tra key tồn tại
DEL keyXóa key
TYPE keyLấy kiểu dữ liệu của key
RENAME key newkeyĐổi tên key
Lệnh Hết Hạn
EXPIRE key 3600 -- expire in 1 hour PEXPIRE key 5000 -- expire in 5000 ms TTL key -- seconds until expiry PTTL key -- ms until expiry PERSIST key -- remove expiry
Mẫu Key
SET session:abc123 "data" EX 1800 -- EX = seconds, PX = milliseconds -- NX = only if not exists -- XX = only if exists SET lock:order42 "owner" NX EX 10
Pub/Sub
Pub/Sub Cơ Bản
-- Subscriber (terminal 1) SUBSCRIBE news alerts -- Publisher (terminal 2) PUBLISH news "Breaking: Redis 8 released"
Subscribe Theo Mẫu
PSUBSCRIBE news.* -- matches news.tech, news.sports, etc.
Lệnh Pub/Sub
SUBSCRIBE channelLắng nghe tin nhắn trên kênh
PUBLISH channel msgGửi tin nhắn tới kênh
PSUBSCRIBE patternSubscribe theo mẫu
UNSUBSCRIBE channelDừng lắng nghe
PUBSUB CHANNELSLiệt kê kênh đang hoạt động
Transaction
MULTI / EXEC
MULTI SET balance:1 900 SET balance:2 1100 EXEC -- executes atomically
Khóa Lạc Quan
WATCH balance:1 val = GET balance:1 -- read current MULTI SET balance:1 (val - 100) EXEC -- EXEC returns nil if balance:1 changed
Lệnh Transaction
MULTIBắt đầu khối transaction
EXECThực thi các lệnh đã xếp hàng
DISCARDHủy các lệnh đã xếp hàng
WATCH keyTheo dõi key thay đổi (khóa lạc quan)
UNWATCHBỏ theo dõi tất cả key
Tính Bền Vững
Snapshot RDB
SAVE -- synchronous snapshot BGSAVE -- background snapshot LASTSAVE -- timestamp of last save
AOF (Append Only File)
appendonly yesBật AOF trong redis.conf
appendfsync alwaysFsync mỗi lần ghi (an toàn nhất, chậm nhất)
appendfsync everysecFsync mỗi giây (khuyến nghị)
appendfsync noĐể OS quyết định (nhanh nhất, rủi ro nhất)
Lệnh Tính Bền Vững
CONFIG GET save CONFIG SET save "900 1 300 10" -- snapshot if 1 change in 900s or 10 in 300s BGREWRITEAOF -- rewrite AOF in background
Mẫu Phổ Biến
Khóa Phân Tán
SET lock:resource "owner-id" NX EX 30 -- NX = acquire only if not held -- EX 30 = auto-release after 30s DEL lock:resource -- explicit release
Giới Hạn Tốc Độ
key = "rate:user:42" INCR key EXPIRE key 60 -- 60-second window -- reject if GET key > max_requests
Mẫu Cache
val = GET "cache:user:1" if val is nil: val = fetch_from_db(1) SET "cache:user:1" val EX 300
Lưu Trữ Session
HSET sess:abc uid 42 role "admin" EXPIRE sess:abc 1800 -- 30 min TTL HGETALL sess:abc