Bộ nhớ đệm (Caching)
Một (bộ nhớ đệm) lưu trữ câu trả lời cho một câu hỏi tốn kém để bạn không phải hỏi lại lần nữa. Nếu trang chủ của bạn chạy cùng một truy vấn nặng cho mỗi khách truy cập, hãy lưu kết quả đó trong Redis trong 60 giây và phục vụ nó ngay lập tức.
Caching là một biện pháp tối ưu hiệu năng, không phải nguồn dữ liệu gốc (source of truth). Cái bẫy kinh điển của người mới là quên việc làm mất hiệu lực cache (cache invalidation) — bản sao được lưu trong cache trở nên cũ và người dùng nhìn thấy dữ liệu lỗi thời. Nguyên tắc chung: chỉ cache khi bạn đã đo được một điểm nghẽn (bottleneck) thực sự, và luôn có một quy tắc rõ ràng cho việc khi nào giá trị được cache hết hạn hoặc được làm mới.
Có hai chiến lược rõ ràng, và việc lẫn lộn chúng gây ra hầu hết các lỗi cache. Hết hạn theo thời gian (TTL — Time To Live, giống như ngày hết hạn được đóng dấu trên giá trị được cache) nói rằng "giá trị này có hiệu lực trong 60 giây, sau đó vứt bỏ nó" — đơn giản, và ổn khi dữ liệu hơi cũ không gây hại gì (một lượt xem, một luồng nội dung trang chủ). Làm mất hiệu lực theo sự kiện (event-based invalidation) nói rằng "xóa giá trị được cache ngay khi dữ liệu gốc thay đổi" — chính xác, nhưng bạn phải nhớ làm điều đó ở mọi đường ghi dữ liệu, và đây chính xác là chỗ mọi người hay sơ suất. Khi không chắc chắn, hãy ưu tiên một TTL ngắn: một giá trị cũ nhiều nhất một phút là lỗi nhỏ hơn nhiều so với một giá trị cũ vĩnh viễn vì bạn quên mất một lần làm mất hiệu lực.