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

Làm thế nào để xác định TTL cho các luồng redis?

Không có cách nào để xóa các mục cũ hơn dựa trên TTL / age. Bạn có thể sử dụng kết hợp XTRIM/XDEL bằng các lệnh khác để cắt luồng.

Hãy xem cách chúng ta có thể sử dụng XTRIM

Luồng XTRIM MAXLEN ~ KÍCH THƯỚC

XTRIM cắt luồng thành một số mục nhất định, loại bỏ các mục cũ hơn (các mục có ID thấp hơn) nếu cần.

Bạn tạo kích thước luồng hàng ngày hoặc định kỳ dựa trên chính sách xóa của mình và lưu trữ ở đâu đó bằng cách sử dụng XLEN lệnh

Chạy một công việc định kỳ sẽ gọi XTRIM là

XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)

Ví dụ:kích thước luồng ngày hôm qua là 500, bây giờ là 600 thì chúng tôi cần xóa 500 mục nhập để có thể chạy

XTRIM x-stream MAXLEN ~ 100

Bạn có thể sử dụng các chính sách khác nhau để xóa, chẳng hạn như hàng ngày, hàng tuần, hai lần một tuần, v.v.

ID luồng XDEL [ID ...]

Xóa các mục nhập đã chỉ định khỏi luồng và trả về số mục nhập đã xóa, có thể khác với số ID được chuyển đến lệnh trong trường hợp một số ID nhất định không tồn tại.

Vì vậy, những gì bạn có thể làm là bất cứ khi nào Dịch vụ B sử dụng sự kiện hơn là bản thân dịch vụ có thể xóa mục nhập luồng vì dịch vụ B biết ID luồng, nhưng điều này sẽ không hoạt động ngay khi bạn bắt đầu sử dụng nhóm khách hàng. Vì vậy, tôi sẽ nói sử dụng Redis set hoặc Redis map để theo dõi id luồng xác nhận và chạy công việc quét định kỳ để dọn dẹp luồng.

Ví dụ

Dịch vụ A gửi một mục luồng có ID1 đến dịch vụ BService B xác nhận mục luồng sau khi sử dụng các mục trong mapack_stream ={ID1:true}, bạn có thể theo dõi dữ liệu khác, ví dụ:tính trong trường hợp của nhóm người tiêu dùng.

Một công việc quét sẽ chạy theo định kỳ, chẳng hạn như 1 giờ sáng hàng ngày, đọc tất cả các phần tử của ack_stream và lọc ra tất cả các mục yêu cầu xóa. Bây giờ bạn có thể gọi XDEL hàng loạt lệnh với tập hợp id luồng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. StackExchange.Redis - Cách sử dụng LockTake / LockRelease

  2. Cách thiết lập trình xử lý trong RedMQ từ các sự kiện được nêu trong miền của tôi

  3. Cụm Laravel + predis + Redis - ĐÃ CHUYỂN / không có kết nối đến 127.0.0.1:6379

  4. Làm cách nào để tôi có thể bảo vệ tuyến đường / sidekiq của mình bằng mật khẩu (tức là yêu cầu xác thực cho công cụ Sidekiq ::Web)?

  5. Nhận giá trị theo mẫu khóa trong StackExchange.Redis