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

làm thế nào để luôn cập nhật bộ nhớ đệm

Vì bạn đang sử dụng bộ nhớ đệm, bạn phải chịu đựng vấn đề về tính không nhất quán của dữ liệu , tức là tại một số thời điểm, dữ liệu trong bộ nhớ cache khác với dữ liệu trong cơ sở dữ liệu.

Bạn không cần cập nhật giá trị trong bộ nhớ cache, bất cứ khi nào giá trị được thay đổi. Nếu không, toàn bộ hệ thống bộ đệm sẽ rất phức tạp (ví dụ:bạn phải duy trì danh sách các khóa đã được lưu trong bộ đệm) và cũng có thể không cần thiết phải làm điều đó (ví dụ:khóa-giá trị có thể chỉ được sử dụng một lần và không cần để cập nhật thêm).

Làm cách nào chúng ta có thể cập nhật dữ liệu trong bộ nhớ cache và giữ cho hệ thống bộ nhớ cache đơn giản?

Thông thường, bên cạnh việc đặt hoặc cập nhật cặp khóa-giá trị trong bộ nhớ cache, chúng tôi cũng đặt TIMEOUT cho mỗi khóa . Sau đó, máy khách có thể lấy cặp khóa-giá trị từ bộ nhớ đệm. Tuy nhiên, nếu một khóa hết thời gian chờ, hệ thống bộ đệm sẽ xóa cặp khóa-giá trị khỏi bộ đệm. Đây được gọi là THE KEY HAS BEEN EXPIRED . Lần tiếp theo, khách hàng cố gắng lấy khóa đó từ bộ nhớ cache, sẽ không nhận được gì. Đây được gọi là CACHE MISS . Trong trường hợp này, khách hàng phải lấy cặp khóa-giá trị từ cơ sở dữ liệu và cập nhật nó vào bộ nhớ cache với thời gian chờ mới.

Nếu dữ liệu đã được cập nhật trong cơ sở dữ liệu, trong khi khóa KHÔNG bị hết hạn trong bộ nhớ cache, máy khách sẽ nhận được dữ liệu không nhất quán. Tuy nhiên, khi khóa đã hết hạn, giá trị của nó sẽ được lấy từ cơ sở dữ liệu và được một số ứng dụng khách chèn vào bộ đệm. Sau đó, các ứng dụng khách khác sẽ nhận được dữ liệu cập nhật cho đến khi dữ liệu được thay đổi lại.

Làm cách nào để đặt thời gian chờ?

Thông thường, có hai loại chính sách hết hạn:

  1. Hết hạn sau N giây / phút / giờ ...
  2. Hết hạn vào một số thời điểm trong tương lai, ví dụ:hết hạn vào năm 2017/7/30 00:00:00

Thời gian chờ lớn có thể làm giảm phần lớn tải cơ sở dữ liệu, trong khi dữ liệu có thể lỗi thời trong một thời gian dài. Thời gian chờ nhỏ có thể giữ cho dữ liệu được cập nhật nhiều nhất có thể, trong khi cơ sở dữ liệu sẽ có tải nặng. Vì vậy, bạn phải cân bằng sự cân bằng khi thiết kế thời gian chờ .

Làm cách nào để Redis hết hạn khóa?

Redis có hai cách để hết hạn khóa:

  1. Khi khách hàng cố gắng thao tác trên một khóa, Redis sẽ kiểm tra xem khóa đã hết thời gian chờ hay chưa. Nếu đúng như vậy, Redis sẽ xóa khóa và hoạt động như thể khóa không tồn tại. Bằng cách này, Redis đảm bảo rằng khách hàng không nhận được dữ liệu đã hết hạn.
  2. Redis cũng có một chuỗi hết hạn lấy mẫu các khóa ở tần suất đã định cấu hình. Nếu các phím hết thời gian chờ, Redis sẽ xóa các phím này. Bằng cách này, Redis có thể đẩy nhanh quá trình hết hạn khóa.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách lưu trữ hình ảnh vào redis bằng python / PIL

  2. Tiết kiệm HASH cho Redis trên ứng dụng rails

  3. ModuleNotFoundError:Không có mô-đun nào có tên 'grp' trên windows

  4. Có lệnh nào trong Redis cho cấu trúc dữ liệu HASH tương tự như MGET không?

  5. Docker soạn Spring boot redis sự cố kết nối