Các kiểu dữ liệu trong Redis
1. String
Nó có thể lưu trữ văn bản, số nguyên, hoặc số thực.
Đặc điểm:
- 512MB
- Lưu thông tin người dùng, bộ đếm, token
RedisTemplate<String, String> redisTemplate;
redisTemplate.opsForValue().set(key, value);
redisTemplate.opsForValue().get(key);
SET user:1:name "Alice" # Lưu tên người dùng
SET user:1:age 30 # Lưu tuổi người dùng
INCR user:1:age # Tăng tuổi lên 1
GET user:1:age # Kết quả: 31
2. Hash
Hash lưu trữ các cặp field-value, tương tự như một đối tượng hoặc bản ghi trong cơ sở dữ liệu.
Đặc điểm:
- Lưu thông tin nhóm
- 1 Hash chứa tối đa 2^32 field
RedisTemplate<String, Object> redisTemplate;
public void saveHash(String key, Map<String, Object> data) { redisTemplate.opsForHash().putAll(key, data); } public Map<Object, Object> getHash(String key) { return redisTemplate.opsForHash().entries(key); } public Object getHashField(String key, String field) { return redisTemplate.opsForHash().get(key, field); }
HSET user:2 name "Bob" age 25 email "bob@example.com" # Lưu thông tin người dùng
HGET user:2 name # Kết quả: "Bob"
HGETALL user:2 # Kết quả: tất cả thông tin
HDEL user:2 email # Xóa email khỏi hash
List
List là một danh sách các giá trị được sắp xếp theo thứ tự (FIFO hoặc LIFO).
Ứng dụng: Quản lý công việc theo hàng đợi, xử lý yêu cầu tuần tự.
Đặc điểm:
- Có thể sử dụng stack or queue
- 2^32 phần tử
RedisTemplate<String, String> redisTemplate;
redisTemplate.opsForList().leftPush(key, value); public List<String> getList(String key) { return redisTemplate.opsForList().range(key, 0, -1); }
LPUSH tasks "task1" "task2" # Thêm vào đầu danh sách
RPUSH tasks "task3" # Thêm vào cuối danh sách
LRANGE tasks 0 -1 # Lấy tất cả phần tử (Kết quả: task2, task1, task3)
LPOP tasks # Lấy và xóa phần tử đầu tiên (task2)
Set
Set là một tập hợp các giá trị duy nhất, không có thứ tự.
Ứng dụng: Lưu trữ danh sách tag, người theo dõi (followers), hoặc quyền truy cập.
Đặc điểm:
- Lưu dữ liệu không trùng nhau
- Hỗ trợ các thao tác toán học trên tập hợp (union, intersection, difference).
RedisTemplate<String, String> redisTemplate;
redisTemplate.opsForSet().add(key, value); public Set<String> getSet(String key) { return redisTemplate.opsForSet().members(key); }
SADD tags "redis" "database" "nosql" # Thêm các tag
SMEMBERS tags # Lấy tất cả phần tử
SREM tags "nosql" # Xóa phần tử "nosql"