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

Lưu trữ các khóa có tiền tố hết hạn trong redis

Điều này không thể được thực hiện trực tiếp. Bạn có thể thêm thời hạn trên toàn bộ hset, nhưng không thể thêm trên các trường riêng lẻ. Nếu bạn muốn làm điều này, bạn có thể gọi r.expire('name', time) , time ở đâu là số giây cho đến khi hết hạn.

Thay vào đó, bạn có thể sử dụng set thay vì hset :

for i in range(10):
    r.set('name:' + str(i), i, ex=time_to_expire_s)

Điều này sẽ làm mất một số chức năng, vì (ví dụ) bạn sẽ không có cách tốt để liệt kê tất cả các khóa bắt đầu bằng 'name:', nhưng nó sẽ cho phép bạn đặt thời hạn cho các khóa một cách độc lập.

Là tùy chọn thứ hai, bạn có thể đặt thời hạn trong các giá trị của hset . Điều này yêu cầu logic phía máy khách và Redis sẽ không thực hiện bất kỳ thao tác nào giúp bạn; nhưng bạn có thể làm điều gì đó như:

for i in range(10):
    r.hset(
        'name',
        i,
        json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
    )

Và sau đó nếu bạn đã từng đọc một giá trị đã hết hạn trong quá khứ, bạn sẽ coi đó là lỗi bộ nhớ cache. Điều này sẽ không giúp ích cho bạn nếu bạn đang cố gắng làm hết hạn các khóa để giải phóng bộ nhớ, nhưng nếu mục tiêu của bạn là khóa hết hạn vì một số lý do đúng đắn, thì điều này có thể hiệu quả với bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thư viện / phương pháp giao tiếp liên quá trình node.js hiệu quả nhất là gì?

  2. redis để ghi nhật ký

  3. node.js lưu trữ các đối tượng trong redis

  4. Làm thế nào để magento đưa ra các tên khóa bộ nhớ cache?

  5. Tại sao Redis SortedSet sử dụng Skip List thay vì Balanced Tree?