Redis và những điều chưa biết

0 0 0

Người đăng: Ông Huy Thắng

Theo Viblo Asia

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"

Bình luận

Bài viết tương tự

- vừa được xem lúc

Caching đại pháp 2: Cache thế nào cho hợp lý?

Caching rất dễ. Mình không nói đùa đâu, caching rất là dễ. Ai cũng có thể làm được chỉ sau 10 phút đọc tutorial. Nó cũng giống như việc đứa trẻ lên 3 đã có thể cầm bút để vẽ vậy.

0 0 126

- vừa được xem lúc

Caching đại pháp 1: Nấc thang lên level của developer

Bí quyết thành công trong việc đáp ứng hệ thống triệu user của những công ty lớn (và cả công ty nhỏ). Tại sao caching lại là kỹ thuật tối quan trọng để phù phép ứng dụng rùa bò của chúng ta thành siêu phẩm vạn người mê.

0 0 82

- vừa được xem lúc

Cache dữ liệu Nodejs với Redis

Một tí gọi là lý thuyết để anh em tham khảo. Cache là gì. Lợi ích của việc cache data. .

0 0 111

- vừa được xem lúc

Nguyên tắc hoạt động của redis server

Sự ra đời của Redis. . Câu chuyện bắt đầu khi tác giả của Redis, Salvatore Sanfilippo. (nickname: antirez), cố gắng làm những công việc gần như là không.

0 0 97

- vừa được xem lúc

Viết ứng dụng chat realtime với Laravel, VueJS, Redis và Socket.IO, Laravel Echo

Xin chào tất cả các bạn, đây là một trong những bài post đầu tiên của mình. Sau bao năm toàn đi đọc các blog tích luỹ được chút kiến thức của các cao nhân trên mạng.

0 0 918

- vừa được xem lúc

Tìm hiểu tổng quan về Redis

1. Lời mở đầu.

0 0 368