Redis SCARD

Redis Scard



“Bộ Redis là tập hợp các chuỗi không có thứ tự và không chứa các bản sao. Chúng rất giống với Java HashSets, Python Sets, v.v. Quan trọng nhất, các hoạt động cơ bản như thêm, xóa và kiểm tra sự tồn tại của một thành viên có hiệu quả cao vì chúng hoạt động trong độ phức tạp thời gian O(1).

Thành viên của một Set

Như đã đề cập, bộ Redis chứa các mục chuỗi duy nhất. Các mục đã tồn tại sẽ không được bộ Redis chấp nhận và sẽ bị bỏ qua. Hơn nữa, một bộ duy nhất có thể chứa tới 4 tỷ chuỗi duy nhất.









Bản chất của bộ Redis là nắm giữ các thành viên duy nhất có ích trong một số trường hợp sử dụng trong thế giới thực.



  • Khả năng thực hiện các hoạt động thiết lập tiêu chuẩn như Hợp nhất, Giao lộ và Khác biệt.
  • Theo dõi khách truy cập duy nhất vào một trang web
  • Biểu diễn các quan hệ thực thể trong thế giới thực

Lệnh SCARD

Lệnh SCARD, viết tắt của Set Cardinality, trả về số thành viên trong một tập hợp được lưu trữ tại một khóa nhất định. Nó hoạt động ở độ phức tạp thời gian O(1), nghĩa là thời gian lệnh SCARD cần để thực thi không phụ thuộc vào số lượng thành viên trong tập hợp nhất định. Nó luôn luôn mất một thời gian không đổi.





Lệnh SCARD có cú pháp rất đơn giản, như minh họa dưới đây.

SCARD set_key

set_key: Chìa khóa của bộ Redis



Lệnh này trả về một giá trị số nguyên là số phần tử trong tập hợp.

Trường hợp sử dụng – Đếm số lượng khách truy cập vào một trang web

Giả sử một công ty bánh pizza “YummyPizza” duy trì một trang web có tên là Deliciouspizza.com, nơi mọi người có thể đặt bánh pizza trực tuyến. Để theo dõi doanh số bán hàng và cơ sở khách hàng của mình, họ duy trì cơ sở dữ liệu Redis để lưu trữ tất cả những khách truy cập duy nhất vào trang web mỗi tháng.

Bất cứ khi nào người dùng truy cập trang web YummyPizza, id người dùng sẽ được thêm vào cơ sở dữ liệu Redis. Ngoài ra, cũng không nên thêm cùng một người dùng vào cơ sở dữ liệu. Vì vậy, cấu trúc dữ liệu lý tưởng là tập hợp Redis, trong đó tập hợp chỉ lưu trữ các thành viên duy nhất.

Giả sử rằng có năm người dùng đã truy cập trang web và những thành viên này được thêm vào cơ sở dữ liệu Redis, như minh họa trong hình bên dưới.

SADD YummyPizzaKhách ghé thăm: Hoàng tử John Mary Raza Stoinis tháng 10

Như mong đợi, số nguyên 5 đã được trả về, có nghĩa là năm phần tử được thêm vào tập hợp được lưu trữ tại khóa “ YummyPizzaKhách đến thăm: Tháng 10.

Vào cuối ngày, quản trị viên công ty cần kiểm tra tổng số khách truy cập duy nhất vào trang web. Vì vậy, Set cardinality cần được tính toán. May mắn thay, lệnh SCARD đã thảo luận trước đây có ích trong loại tình huống này.

Hãy thực hiện lệnh SCARD trên tập hợp được lưu trữ tại khóa “ YummyPizzaKhách đến thăm: Tháng 10.

Scard YummyPizzaKhách đến thăm: Tháng 10

Đầu ra là 5, có nghĩa là năm phần tử duy nhất nằm trong tập hợp đã chỉ định. Lệnh này thực thi quá nhanh. Không quan trọng năm thành viên hay 50000 thành viên; thời gian thực hiện sẽ không đổi.

Giả sử rằng khóa đã chỉ định không tồn tại trong cơ sở dữ liệu Redis. Sau đó, đầu ra sẽ là 0, như trong ví dụ sau. Trong trường hợp này, chúng tôi sẽ chỉ định một khóa không có trong cơ sở dữ liệu.

sẹo NonExistingKey

Sự kết luận

Tóm lại, Redis set là một ứng cử viên lý tưởng để lưu trữ các chuỗi duy nhất. Như đã thảo luận, điều quan trọng nhất về Redis set là hầu hết các thao tác set liên quan đều mất một khoảng thời gian cố định để thực thi. Lệnh SCARD là một trong những lệnh tập hợp được sử dụng nhiều nhất để tính tổng số phần tử của tập hợp cho một tập hợp nhất định được lưu trữ tại một khóa đã chỉ định. Bất kể có bao nhiêu phần tử tập hợp sẵn có, lệnh này sẽ mất thời gian liên tục để cung cấp đầu ra. Như được hiển thị trong ví dụ trước, nếu khóa thiết lập không tồn tại, thì đầu ra sẽ là 0.