Transactions trong Redis cho phép nhóm nhiều lệnh thành một atomic unit — tất cả cùng thực thi hoặc không lệnh nào thực thi. Đây là chìa khóa cho các ứng dụng cần tính nhất quán dữ liệu.
Transactions là gì?
Redis transaction đảm bảo:
- ✅ Atomic — Tất cả lệnh thực thi như một đơn vị
- ✅ Sequential — Lệnh thực thi theo đúng thứ tự
- ❌ Không rollback — Nếu lệnh giữa chừng lỗi, các lệnh trước vẫn đã thực thi
- ❌ Không isolation — Client khác vẫn có thể đọc dữ liệu giữa transaction
MULTI / EXEC
Cú pháp cơ bản
# Bắt đầu transaction
MULTI
# OK
# Thêm lệnh vào queue
SET account:a 1000
# QUEUED
SET account:b 500
# QUEUED
# Thực thi tất cả
EXEC
# 1) OK
# 2) OK
Hủy transaction
MULTI
SET key "value"
# Thay đổi ý, hủy transaction
DISCARD
# OK
GET key
# (nil) → lệnh SET không được thực thi
Lưu ý quan trọng
Đây là điểm mà nhiều Developer mới dễ hiểu nhầm nhất về Redis Transactions:
Redis Transaction KHÔNG có Rollback như SQL
Trong SQL (MySQL, PostgreSQL), nếu một lệnh trong transaction bị lỗi, bạn có thể ROLLBACK để trả dữ liệu về trạng thái cũ. Redis KHÔNG làm được điều này.
# SQL: Có ROLLBACK
BEGIN;
UPDATE accounts balance balance id ;
accounts balance balance id ;
;
;
# Redis: KHÔNG có
MULTI
DECRBY account:a
INCRBY account:b

0 bình luận
Đang tải bình luận...
Để lại bình luận