Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Nhận tất cả các trường và giá trị của khóa băm bằng cách sử dụng redis trong nút

Bạn đang nhận được một giá trị vì bạn ghi đè giá trị trước đó.

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

Điều này thêm Id, ReqNo vào đối tượng băm Table1.

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

Điều này ghi đè Id và ReqNo cho đối tượng băm Table1. Tại thời điểm này, bạn chỉ có hai trường trong hàm băm.

Trên thực tế, vấn đề của bạn xuất phát từ việc bạn đang cố gắng ánh xạ một mô hình cơ sở dữ liệu quan hệ với Redis. Bạn không nên. Với Redis, tốt hơn là bạn nên suy nghĩ về cấu trúc dữ liệu và đường dẫn truy cập.

Bạn cần lưu trữ một đối tượng băm cho mỗi bản ghi. Ví dụ:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

Sau đó, bạn có thể sử dụng một bộ để lưu trữ các ID:

SADD Table1 9324324 9324325

Cuối cùng để truy xuất dữ liệu ReqNo được liên kết với bộ sưu tập Table1:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

Nếu bạn cũng muốn tìm kiếm tất cả các ID được liên kết với một ReqNo nhất định, thì bạn cần một cấu trúc khác để hỗ trợ đường dẫn truy cập này:

SADD ReqNo:23432 9324324 9324325

Vì vậy, bạn có thể lấy danh sách ID cho bản ghi 23432 bằng cách sử dụng:

SMEMBERS ReqNo:23432

Nói cách khác, đừng cố chuyển đổi mô hình quan hệ:chỉ cần tạo cấu trúc dữ liệu của riêng bạn hỗ trợ các trường hợp sử dụng của bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mẫu tốt nhất để xử lý vòng lặp không đồng bộ trong Node.js

  2. Redis keyspace thông báo hết hạn không kích hoạt

  3. Redis được định cấu hình để lưu ảnh chụp nhanh RDB, nhưng nó hiện không thể tồn tại trên đĩa - Ubuntu Server

  4. Redis phân phối gia tăng với khóa

  5. Cài đặt Redis trên Debian 9