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

So sánh hiệu suất của việc sử dụng hàm băm Redis so với nhiều khóa

Chọn hash qua string có nhiều lợi ích và một số hạn chế tùy thuộc vào các trường hợp sử dụng. Nếu bạn định chọn băm, tốt hơn nên thiết kế đối tượng json của bạn dưới dạng các trường &giá trị băm như;

127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
 1) "ssn"
 2) "10101010101"
 3) "name"
 4) "john"
 5) "surname"
 6) "wick"
 7) "date"
 8) "2020-02-02"
 9) "location"
10) "continental"

Dưới đây là những lợi ích của hash qua chuỗi khi bạn thực hiện mô hình hóa dữ liệu thích hợp.

  • Về mặt hiệu suất, hầu hết các lệnh cho cả chuỗi và hàm băm đều có độ phức tạp như nhau.
  • Truy cập / cập nhật / xóa các trường json riêng lẻ trên các hàm băm dễ dàng hơn khi nó được so sánh với các chuỗi. Bạn không cần phải lấy toàn bộ chuỗi, giải mã, thực hiện thay đổi và đặt lại. Bạn có thể sử dụng HDEL, HSET hoặc HGET cho các thao tác đó mà không cần lấy toàn bộ đối tượng.
  • Nếu kích thước của đối tượng chuỗi của bạn tăng lên, bạn sẽ bị ảnh hưởng bởi mạng và băng thông trong khi truyền (lấy / đặt) toàn bộ đối tượng. Như nó được nêu trong tài liệu

Tốc độ của RAM và băng thông bộ nhớ dường như ít quan trọng hơn đối với hiệu suất toàn cầu, đặc biệt là đối với các đối tượng nhỏ. Đối với các đối tượng lớn (> 10 KB), nó có thể trở nên đáng chú ý.

  • Hàm băm thân thiện với bộ nhớ hơn chuỗi nếu bạn tạo điểm chuẩn tốt để thiết kế kích thước dữ liệu của mình. Như đã nêu trong tài liệu và một trường hợp sử dụng ví dụ của kỹ thuật instagram, bạn có thể nhận được lợi ích to lớn với cách mã hóa đặc biệt.

Hàm băm, Danh sách, Tập hợp chỉ bao gồm các số nguyên và Tập hợp đã sắp xếp, khi nhỏ hơn một số phần tử nhất định và kích thước phần tử tối đa, được mã hóa theo cách rất hiệu quả về bộ nhớ sử dụng ít bộ nhớ hơn tới 10 lần (với 5 thời gian sử dụng bộ nhớ ít hơn là mức tiết kiệm trung bình).

Mặt khác, tùy thuộc vào (các) trường hợp sử dụng của bạn;

  • ziplist không miễn phí mà là sự đánh đổi giữa bộ nhớ và cpu.
  • Bạn không thể hết hạn một phần các trường băm. Nếu bạn chia thành nhiều chuỗi thì bạn có thể EXPIRE chúng nhưng trong hàm băm chỉ có thể hết hạn khóa cấp cao nhất với tất cả các giá trị.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Điểm chuẩn Couchbase cho thấy các INSERT và GET rất chậm (sử dụng các hoạt động KeyValue); chậm hơn so với dữ liệu MySQL tồn tại

  2. Tìm khóa bằng ký tự đại diện

  3. Việc thiết lập chỉ đọc cho nô lệ có khiến nô lệ xác nhận mọi tra cứu băm với chủ không?

  4. Cần tây / Làm lại cùng một tác vụ được thực hiện song song nhiều lần

  5. chuyển kết quả cho một lệnh khác trong redis