- vừa được xem lúc

Tìm hiểu nhanh về Cache Aside

0 0 18

Người đăng: tuananhhedspibk

Theo Viblo Asia

Tổng quan

Là cơ chế cache thường được sử dụng nhất, mô hình hoạt động của nó như sau:

File_000

Cơ chế này thường được dùng cho trường hợp đọc nhiều và ghi ít. Ngoài ra còn phụ thuộc vào việc dữ liệu trả về có thay đổi hay không (truy vấn theo primary key thì thường hiếm khi thay đổi).

Kĩ thuật thường dùng là memcache.

Lợi ích đem lại ở đây đó là khả năng phục hồi dữ liệu khi cache gặp lỗi (chỉ cần truy vấn ngược về DB là xong).

Cần lưu ý:

  • Cập nhật vào cache các state create/ update của DB (sử dụng logic code)
  • Cơ chế refresh cache (LRU hay LFU).

Least Frequently Used (LFU)

Nội dung giải thuật

Là giải thuật caching, tại đó cache block với số lần được truy xuất ít nhất sẽ bị loại bỏ nếu cache bị đầy. Ở giải thuật này ta sẽ kiểm tra tần suất được truy xuất của từng block, các block cũ với tần suất bằng nhau sẽ bị loại bỏ dựa theo một quy tắc nào đó (ví dụ FIFO chẳng hạn, hoặc sẽ loại bỏ đi block với lần sử dụng gần nhất cách thời điểm hiện tại xa nhất).

Cách hoạt động

Sử dụng 2 hàm add & get.

  • add(key, value): thêm cặp (key, value) tương ứng vào cache, đầu tiên kiểm tra capacity, nếu còn dư thì sẽ thêm còn nếu không thì sẽ loại bỏ đi (key, value) với tần suất sử dụng thấp nhất và thời gian sử dụng cuối xa nhất.
  • get(key): trả về value tương ứng với key (nếu key không tồn tại, ta trả về giá trị integer nhỏ nhất) đồng thời di chuyển nó đến vị trí thích hợp trong cache (dựa theo tần số).

File_000 (1)

Triển khai thuật toán

https://github.com/tuananhhedspibk/BlogCode/tree/main/LFUCaching

Least Recently Used (LRU)

Nội dung chính

Giải thuật này giữ cho các items thường xuyên được sử dụng luôn có mặt ở phần đầu của cache. Khi một item mới được truy cập thì nó sẽ được đẩy lên đầu. Khi cache chạm tới ngưỡng capacity các items ít được truy cập sẽ bị xoá khỏi cache tính từ phía cuối của cache

Hoạt động

LRU cache cung cấp 2 method put & get

  • put(key, value): set hoặc insert cặp (key, value). Khi cache chạm tới ngưỡng capacity, item với tần suất truy cập ít nhất sẽ bị loại bỏ khỏi cache (sẽ là phần tử cuối cùng).
  • get(key): lấy về value tương ứng với key, nếu key không tồn tại sẽ trả về -1, nếu key tồn tại thì sẽ đưa item tương ứng với key lên đầu cache.

Ví dụ:

LRU caching

Triển khai thuật toán

https://github.com/tuananhhedspibk/BlogCode/blob/main/LRUCaching/index.ts

Bình luận

Bài viết tương tự

- vừa được xem lúc

Caching đại pháp 1: Nấc thang lên level của developer

Bí quyết thành công trong việc đáp ứng hệ thống triệu user của những công ty lớn (và cả công ty nhỏ). Tại sao caching lại là kỹ thuật tối quan trọng để phù phép ứng dụng rùa bò của chúng ta thành siêu phẩm vạn người mê.

0 0 82

- vừa được xem lúc

Cache dữ liệu Nodejs với Redis

Một tí gọi là lý thuyết để anh em tham khảo. Cache là gì. Lợi ích của việc cache data. .

0 0 111

- vừa được xem lúc

In-memory cache là gì?

Bài viết gốc: https://www.tranthanhdeveloper.com/2020/12/in-memory-cache-la-gi.html.

0 0 38

- vừa được xem lúc

Cache là gì và nguyên lý hoạt động của cache

Trong vài trở lại đây, công nghệ thông tin đã trở thành bàn đạp cho sự cải thiện mạnh mẽ cho vô số các loại hình kinh doanh. Đồng thời, các kiến trúc phần mềm ngày càng trở nên phức tạp và số lượng ng

0 0 257

- vừa được xem lúc

Tăng tốc website: Sử dụng Page Cache - Application Cache

Như đã đề cập trong Lời mở đầu, trong phần này tôi sẽ đề cập tới cách thực hiện page cache đầu tiên đó là Application Cache - tôi tạm gọi như vậy, với ý nghĩa là thực hiện cache ngay trong web applica

0 0 55

- vừa được xem lúc

Tăng tốc website: Sử dụng Page Cache - Lời mở đầu

Bài đầu tiên trong series này, tôi sẽ điểm lại một vài nội dung cơ bản nhất để các bạn chưa biết đến kỹ thuật Page Cache cũng có thể nắm được. Các bạn nào đã biết thì cũng có thể đọc cho vui rồi cho t

0 0 41