Vì bạn đang thực hiện '...' nên thật khó để nói chắc chắn, nhưng tôi muốn nói rằng bạn đang đặt mykey trong phần đó, điều này sẽ giúp loại bỏ hết hạn một cách hiệu quả.
Từ hướng dẫn EXPIRE
Thời gian chờ chỉ bị xóa khi xóa khóa bằng lệnh DEL hoặc được ghi đè bằng lệnh SET hoặc GETSET
Ngoài ra, liên quan đến -1 câu trả lời từ TTL
Giá trị trả lại
Trả lời số nguyên:TTL tính bằng giây hoặc -1 khi phím không xuất hiện notexist hoặc không có thời gian chờ.
CHỈNH SỬA:Lưu ý rằng hành vi này đã thay đổi trong Redis 2.8
Bắt đầu với Redis 2.8, giá trị trả về trong trường hợp lỗi đã thay đổi:
Lệnh trả về -2 nếu khóa không tồn tại.
Lệnh trả về -1 nếu khóa tồn tại nhưng không có liên quan hết hạn.
P>
Nói cách khác, nếu khóa của bạn tồn tại, nó có vẻ sẽ tồn tại lâu dài, tức là chưa đặt bất kỳ thời hạn nào.
CHỈNH SỬA:Có vẻ như tôi có thể tái tạo điều này nếu tôi tạo khóa trên máy chủ nô lệ REDIS, máy chủ nô lệ sẽ không xóa khóa mà không có đầu vào chính, vì thông thường bạn sẽ không tạo khóa cục bộ trên máy chủ nô lệ. Đây có phải là trường hợp ở đây không?
Tuy nhiên, trong khi các nô lệ được kết nối với chủ sẽ không hết hạn khóa một cách phụ thuộc (mà sẽ đợi DEL đến từ chủ), chúng sẽ vẫn sử dụng trạng thái hết hạn đầy đủ hiện có trong tập hợp dữ liệu, vì vậy khi nô lệ được chọn làm chủ thì nó sẽ có thể khai thác các khóa một cách độc lập, hoàn toàn hoạt động như một khóa chính.