Một chút cơ bản về Caching

Những điều cơ bản về Cache
  • Caching là hành động lưu trữ lại kết quả của Action tốn thời gian để có thể tái sử dụng nhanh hơn. 3 từ khóa quan trọng cần nhớ ở đây là: "lưu trữ lại", "Action tốn thời gian", "tái sử dụng nhanh hơn".
  • Bộ nhớ Cache thường có dạng key-value
    • Hashmap trong code
    • Key-value trong database (redis, memcache, ..)
    • File (với filename là key)
  • Cache có dạng key-value nên sẽ có những operation cơ bản:
    • Get (by key)
    • Set (by key)
    • Delete (by key)
  • 1 value được lưu vào cache thường đi kèm với tham số TTL - Time To Live: là thời gian hiệu lực của value này trước khi nó được xóa khỏi cache để giải phóng bộ nhớ.
  • Vấn đề phải xử lý với Cache là: Stale Data - data không đúng với data gốc.
Tiêu chí để lựa chọn việc sử dụng Cache: 
  • Action tốn nhiều thời gian/tài nguyên
  • Value được sử dụng lại nhiều lần
Có thể sử dụng Cache ở những đâu?


  • Client Side - thiết bị người dùng: 
    • Đặt HTTP header để control cache của request (hên xui)
    • Configuration cache HTTP request trong lib
    • Implement cache chủ động vào local storage
  • Proxy/LB: là các layer trung gian trước khi request của người dùng tới được application của chúng ta. Các lớp này có thể là CDN, Reverse proxy, Gateway, ... Caching tại các lớp trung gian chủ yếu phục vụ content tĩnh cho số lượng người dùng lớn.
    • Đặt HTTP header để control cache của request
    • Configuration cache HTTP request trên các server trung gian
  • Application - lớp Cache tại Application: Cache phục vụ content tĩnh cho số lượng lớn người dùng
    • Configuration các Abadon / plugin có sẵn
    • Implement cache chủ động
  • Database - là lớp Cache tại  Database: caching phục vụ việc truy xuất dữ liệu
    • Config query cache
    • Config memory Usage
  • OS/Kernal - lớp cache của hệ thống: chúng ta gần như không có quyền kiểm soát cache tại đây
Bài viết được tham khảo và copy từ anh Minh Monmen. Cảm ơn anh đã chia sẻ những kiến thức rất hữu ích.


Nhận xét