Không, bạn không thể tạo hàm băm bằng SETEX
(là một phương thức chuỗi). Bạn có thể gọi EXPIRE
trên khóa băm, nhưng điều đó sẽ hết hạn toàn bộ hàm băm. Hiện tại không có hỗ trợ nào cho việc hết hạn các cặp khóa / giá trị băm riêng lẻ.
Cập nhật:
Nếu bạn muốn đặt thời hạn trên toàn bộ hàm băm trong khi đặt các phần tử riêng lẻ của nó, bạn có thể đạt được điều đó bằng một số cách.
-
Sử dụng pipelining. Pipelining là một chế độ hoạt động đặc biệt trong đó ứng dụng redis đưa ra một số lệnh liên tiếp nhanh chóng, không phải đợi phản hồi để gửi lệnh tiếp theo. Đây là một ví dụ trong ruby:
redis.pipelined do redis.hset "foo", "bar", 1 redis.expire "foo", 300 end
-
Sử dụng các giao dịch. Nếu không có các khóa được theo dõi, điều này tương tự như pipelining (đối với một giao dịch không thể hủy bỏ). Các lệnh được đảm bảo chạy cùng nhau và nguyên tử (một số đường ống có thể chạy xen kẽ, các giao dịch được tuần tự hóa)
redis.multi do redis.hset "foo", "bar", 1 redis.expire "foo", 300 end
-
Sử dụng kịch bản lua để thực hiện lệnh HSETEX tùy chỉnh của bạn. Nó sẽ được thực thi nguyên tử và bạn chỉ cần gửi một lệnh (thay vì 2 (pipelining) hoặc 4 (giao dịch)).