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

In-memory cache là gì?

0 0 38

Người đăng: Thành Trần

Theo Viblo Asia

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

Như chúng ta đã biết, máy tính thường sẽ có 2 nơi lưu trữ dữ liệu chính, một là ổ đĩa cứng và vùng thứ 2 là RAM. Việc đọc và ghi dữ liệu tại RAM và ổ đĩa cứng có sự khác biệt nhau rất lớn về mặt tốc độ. RAM cho chúng ta tốc độ đọc ghi đáng kinh ngạc tùy vào vào từng loại nhưng thường cho tốc độ hàng chục Gigabyte trên giây so với tốc độ từ khoảng 50 ~ 250MB/s của SSD. Nhìn vào những con số đó ta thấy rõ ràng tốc đọc và ghi giữa 2 vùng lưu trữ là rất lớn. Ngoài các thao tác đọc dữ liệu từ ổ đĩa cứng làm giảm hiệu năng thì các chương trình yêu cầu CPU tính toán nhiều cũng giảm hiệu năng lớn.

Từ hai vấn đề vừa được đề cập ở trên chúng ta có thể nghĩ tới một giải pháp đó là lưu trữ tạm thờidữ liệu lên bộ nhớ RAM để tăng hiệu năng ứng dụng, việc lưu trữ tạm thời trên RAM thì người ta gọi là in-memory cache.

Hạn chế của In-memory cache

Mặc dù cho tốc độ đọc ghi nhanh kinh ngạc thì bộ nhớ RAM thường có dung lượng hạn chế do đó chúng ta phải quan tâm và quản lý cái gì nên được cache và khi bộ nhớ gần đầy thì chúng ta phải xóa bớt dữ liệu đang lưu trữ trên RAM. Thêm một vấn đề với RAM là dữ liệu sẽ bị mất khi tắt máy hay mất điện nên chúng ta nên ưu tiên cho việc lưu tạm những dữ liệu đã được lưu trong ổ cứng nhưng việc truy suất lại từ ổ cứng chậm hoặc ưu tiên lưu trữ dữ liệu có thể tính toán lại được. Hạn chế việc sử dung in-memory cache như là một cơ sở dữ liệu để lưu trữ dữ liệu được tạo mới. Nếu lựa chọn giải pháp lưu dữ liệu được tạo mới tạm thời trên RAM thì nên tiến hành ghi vào ổ cứng ngay khi có thể. Nếu bạn đang lên kế hoạch lưu tạm trên RAM khoảng vài ba giây rồi mình mới lưu thực sự xuống ổ cứng thì bạn phải chấp nhận có thể mất dữ liệu người dùng, pha vỡ tính toàn vẹn dữ liệu của ứng dụng.

Một số khái niệm quan trọng khi cache dữ liệu:

Lúc suy tính tới việc ứng dụng cache vào bất kì một ứng dụng nào chúng ta nên nắm rõ và ước tính được các thông số như cache hit, cache miss của ứng dụng và Cache Replacement Policy của từng cache provider để có thể tận dụng được tối đa sức mạnh của cache, giảm thiếu bộ nhớ, ..

Cache hit là gì?

Cache hit là việc dữ liệu được yêu cầu đã được lưu trữ trong bộ nhớ. Tỉ lệ cache hit càng cao thì cho thấy rằng sự quản lý cache của developers là rất tốt nó đồng nghĩa với việc hệ thống cache đạt được tối ưu nhất.

Cache miss là gì?

Ngược lại với cache hit thì chúng ta có cache miss, cache miss là trạng thái mà dữ liệu yêu cầu chưa được lưu trữ trong bộ nhớ đệm. Trang thái cache miss càng cao thì đồng nghĩa với việc tăng thêm gánh nặng cho hệ thống của chúng ta. Việc áp dụng cache phải nên được đánh giá lại.

Cache Replacement Policy là gì?

Cache Replacement Policy dịch nôm na là các thuật toán để thay thế giá trị hoặc xóa các giá trị cũ để thêm giá trị mới vào. Trong bài viết này thì mình sẽ không giải thích cụ thể nhưng bạn có thể tham khảo link wikipedia nay: https://en.wikipedia.org/wiki/Cache_replacement_policies

Và đây là một số cách thức phổ biến:

  • Bélády's algorithm
  • First in first out (FIFO)
  • Last in first out (LIFO) or First in last out (FILO)
  • Least recently used (LRU)
  • Time aware least recently used (TLRU)
  • Most recently used (MRU)
  • Pseudo-LRU (PLRU)
  • Random replacement (RR)
  • Segmented LRU (SLRU)
  • Least-frequently used (LFU)
  • Least frequent recently used (LFRU)
  • LFU with dynamic aging (LFUDA)
  • Low inter-reference recency set (LIRS)
  • CLOCK-Pro
  • Adaptive replacement cache (ARC)
  • AdaptiveClimb (AC)
  • Clock with adaptive replacement (CAR)
  • Multi queue (MQ)
  • Pannier: Container-based caching algorithm for compound objects

Một số thư viện và cache provider phổ biến sử dụng trong Java và cách ngôn ngữ khác

  • EhCache
  • Caffeine Cache
  • Memcached
  • Redis
  • Hazelcast
  • Couchbase
  • Infinispan
  • ...

Bình luận

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

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

Caching đại pháp 2: Cache thế nào cho hợp lý?

Caching rất dễ. Mình không nói đùa đâu, caching rất là dễ. Ai cũng có thể làm được chỉ sau 10 phút đọc tutorial. Nó cũng giống như việc đứa trẻ lên 3 đã có thể cầm bút để vẽ vậy.

0 0 126

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

Memory cache là gì và cách hoạt động? - Viblo

Xin chào mọi người. Hy vọng sẽ được thảo luận cùng anh em.

0 0 44

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

[Phần 1] Aerospike bạn đã biết gì chưa?

Nếu đã từng nghe đến Redis (Remote Dictionary Server) thì chắc hẳn mọi người đã hiểu nó là gì đúng không ? Aerospike cũng vậy, nhưng Aerospike là cái gì, tại sao nó lại "cũng vậy" và có gì thú vị mà t

0 0 42

- 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

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