Bài này chúng ta sẽ tìm hiểu về Elasticache trong AWS, trước khi chúng ta bắt đầu sử dụng AWS một cách dễ dàng hơn.

1. Elasticache là gì?

  • Elasticache là một dịch vụ web được sử dụng để triển khai, vận hành và mở rộng quy mô bộ nhớ đệm trong bộ nhớ trên đám mây.
  • Nó cải thiện hiệu suất của các ứng dụng web bằng cách cho phép bạn truy xuất thông tin từ bộ nhớ đệm trong bộ nhớ được quản lý, nhanh chóng thay vì dựa hoàn toàn vào cơ sở dữ liệu dựa trên đĩa chậm hơn.
  • Ví dụ: nếu bạn đang kinh doanh trực tuyến, khách hàng liên tục hỏi thông tin của một sản phẩm cụ thể. Thay vì front-end luôn hỏi thông tin về sản phẩm, bạn có thể lưu dữ liệu vào bộ nhớ cache bằng Elasticache.
  • Nó được sử dụng để cải thiện độ trễ và thông lượng cho nhiều khối lượng công việc ứng dụng cần đọc (chẳng hạn như mạng xã hội, trò chơi, chia sẻ phương tiện và cổng Hỏi & Đáp) hoặc tính toán khối lượng công việc chuyên sâu (chẳng hạn như công cụ đề xuất).
  • Bộ nhớ đệm cải thiện hiệu suất ứng dụng bằng cách lưu trữ các phần dữ liệu quan trọng trong bộ nhớ để truy cập độ trễ thấp.
  • Thông tin được lưu trong bộ nhớ cache có thể bao gồm kết quả của các truy vấn cơ sở dữ liệu chuyên sâu I / O hoặc kết quả của các phép tính chuyên sâu về tính toán.

2. Các loại Elasticache

Có hai loại Elasticache:

  • Đã ghi nhớ(Memcached)
  • Redis

3. Đã ghi nhớ(Memcached)

  • Amazon Elasticache cho Memcached là một dịch vụ lưu trữ khóa-giá trị trong bộ nhớ tương thích với Memcached sẽ được sử dụng làm bộ nhớ đệm.
  • Đây là một kho dữ liệu trong bộ nhớ dễ sử dụng, hiệu suất cao.
  • Nó có thể được sử dụng như một bộ nhớ cache hoặc lưu trữ phiên.
  • Nó chủ yếu được sử dụng trong các ứng dụng thời gian thực như Web, Ứng dụng di động, Trò chơi, Công nghệ quảng cáo và Thương mại điện tử.

3.1 Hoạt động của Memcached

  • Cơ sở dữ liệu được sử dụng để lưu trữ dữ liệu trên đĩa hoặc SSD trong khi Memcached giữ dữ liệu của nó trong bộ nhớ bằng cách loại bỏ nhu cầu truy cập đĩa.
  • Memcached sử dụng dịch vụ lưu trữ khóa-giá trị trong bộ nhớ để tránh chậm trễ thời gian tìm kiếm và có thể truy cập dữ liệu trong micro giây.
  • Nó là một dịch vụ phân tán có nghĩa là nó có thể được mở rộng bằng cách thêm các nút mới.
  • Nó là một dịch vụ đa luồng có nghĩa là nó có thể được mở rộng khả năng tính toán của mình. Do đó, tốc độ, khả năng mở rộng, thiết kế đơn giản, quản lý bộ nhớ hiệu quả và hỗ trợ API cho hầu hết các ngôn ngữ phổ biến khiến Memcached trở thành lựa chọn phổ biến cho các trường hợp sử dụng bộ nhớ đệm.

3.2 Lợi ích của Memcached

  • Thời gian phản hồi dưới mili giây

Kể từ đó, Memcached lưu trữ dữ liệu trong bộ nhớ chính của máy chủ và các bộ lưu trữ trong bộ nhớ không cần phải chuyển sang đĩa cho dữ liệu. Do đó, nó có thời gian phản hồi nhanh hơn và cũng hỗ trợ hàng triệu thao tác mỗi giây.

  • Sự đơn giản

Thiết kế của Memcached rất đơn giản giúp nó mạnh mẽ và dễ sử dụng trong việc phát triển ứng dụng. Nó hỗ trợ nhiều ngôn ngữ như Java, Ruby, Python, C, C ++, v.v.

  • Khả năng mở rộng

Một kiến ​​trúc của Memcached được phân phối và đa luồng giúp dễ dàng mở rộng quy mô. Bạn có thể chia dữ liệu giữa một số nút cho phép bạn mở rộng dung lượng bằng cách thêm các nút mới. Nó là đa luồng có nghĩa là bạn có thể mở rộng dung lượng máy tính.

  • cộng đồng

Cộng đồng là một nguồn mở được hỗ trợ bởi một cộng đồng sôi động. Các ứng dụng như WordPress và Django sử dụng Memcached để cải thiện hiệu suất.

3.3 Sau đây là các trường hợp sử dụng của Memcached

  • Bộ nhớ đệm

Nó triển khai bộ nhớ đệm trong bộ nhớ hiệu suất cao giúp giảm độ trễ truy cập dữ liệu, tăng độ trễ, giảm tải hệ thống back-end của bạn. Nó phục vụ các mục được lưu trong bộ nhớ cache trong vòng chưa đầy một phần nghìn giây và cũng cho phép bạn chia tỷ lệ tải cao hơn một cách dễ dàng và hiệu quả.

  • Kho phiên

Nó thường được các nhà phát triển ứng dụng sử dụng để lưu trữ và quản lý dữ liệu phiên cho các ứng dụng dựa trên internet. Nó cung cấp độ trễ dưới mili giây và cũng quy mô bắt buộc để quản lý các trạng thái phiên như hồ sơ người dùng, thông tin đăng nhập và trạng thái phiên.

4. Redis

  • Redis là viết tắt của Remote Dictionary Server .
  • Nó là một kho lưu trữ dữ liệu khóa-giá trị mã nguồn mở và nhanh chóng trong bộ nhớ.
  • Thời gian phản hồi của nó là một phần nghìn giây và cũng phục vụ hàng triệu yêu cầu mỗi giây cho các ứng dụng thời gian thực như Trò chơi, AdTech, Dịch vụ tài chính, Chăm sóc sức khỏe và IoT.
  • Nó được sử dụng để lưu vào bộ nhớ đệm, quản lý phiên, chơi game, bảng xếp hạng, phân tích thời gian thực, không gian địa lý, v.v.

4.1 Làm việc của Redis

  • Redis giữ dữ liệu của nó trong bộ nhớ thay vì lưu trữ dữ liệu trong đĩa hoặc SSD. Do đó, nó loại bỏ nhu cầu truy cập dữ liệu từ đĩa.
  • Nó tránh được sự chậm trễ về thời gian và dữ liệu có thể được truy cập trong micro giây.
  • Nó là một kho lưu trữ dữ liệu khóa-giá trị trong bộ nhớ mã nguồn mở hỗ trợ các cấu trúc dữ liệu như tập hợp và danh sách được sắp xếp.

4.2 Lợi ích của Redis

  • Lưu trữ dữ liệu trong bộ nhớ(In-memory data store)
    • Redis lưu trữ dữ liệu trong bộ nhớ trong khi các cơ sở dữ liệu như PostgreSQL, MongoDB, v.v. lưu trữ dữ liệu trong đĩa.
    • Nó không lưu trữ dữ liệu trong đĩa. Do đó, nó có thời gian phản hồi nhanh hơn.
    • Chỉ mất chưa đến một phần nghìn giây cho các thao tác đọc và ghi và hỗ trợ hàng triệu yêu cầu mỗi giây.
  • Cấu trúc dữ liệu linh hoạt(Flexible data structures)
    • Nó hỗ trợ nhiều cấu trúc dữ liệu khác nhau để đáp ứng nhu cầu ứng dụng của bạn. Sau đây là các cấu trúc dữ liệu được Redis hỗ trợ:
Loại dữ liệuSự miêu tả
StringsĐây là một văn bản có kích thước lên đến 512MB.
ListsNó là một tập hợp các chuỗi.
SetsNó là một tập hợp các chuỗi không có thứ tự với khả năng giao nhau, kết hợp.
Sets đã sắp xếpCác bộ được sắp xếp theo giá trị.
Băm(Hashes)Nó là một cấu trúc dữ liệu được sử dụng để lưu trữ các trường và các giá trị liên quan của nó.
Bản đồ bit(Bitmaps)Nó là một kiểu dữ liệu cung cấp các hoạt động ở mức bit.
HyperLogLogsĐây là một cấu trúc dữ liệu xác suất được sử dụng để ước tính các mục duy nhất trong một tập dữ liệu.
  • Sự đơn giản(Simplicity)
    • Nó cho phép bạn viết ít dòng mã hơn để lưu trữ, truy cập và sử dụng dữ liệu trong các ứng dụng của mình.
    • Ví dụ: nếu dữ liệu của ứng dụng của bạn được lưu trữ trong Hashmap và bạn muốn lưu trữ trong kho dữ liệu, thì bạn có thể sử dụng cấu trúc dữ liệu băm Redis để lưu trữ dữ liệu. Nếu bạn lưu trữ dữ liệu mà không có bất kỳ cấu trúc dữ liệu băm nào, thì bạn cần phải viết nhiều dòng mã để chuyển đổi từ định dạng này sang định dạng khác.
  • Nhân rộng và bền bỉ(Replication and Persistence)
    • Nó cung cấp một kiến ​​trúc bản sao chính trong đó dữ liệu được sao chép sang nhiều máy chủ.
    • Nó cải thiện hiệu suất đọc và phục hồi nhanh hơn khi bất kỳ máy chủ nào gặp sự cố.
    • Nó cũng hỗ trợ tính bền bỉ bằng cách cung cấp các bản sao lưu tại thời điểm, tức là sao chép tập dữ liệu vào đĩa.
  • Tính khả dụng và khả năng mở rộng cao(High availability and scalability)
    • Nó xây dựng các giải pháp có tính khả dụng cao với hiệu suất và độ tin cậy nhất quán.
    • Có sẵn các tùy chọn khác nhau có thể điều chỉnh kích thước cụm của bạn như thu nhỏ, thu nhỏ hoặc mở rộng quy mô. Bằng cách này, kích thước cụm có thể được thay đổi theo nhu cầu.
  • Khả năng mở rộng(Extensibility)
    • Đây là một dự án mã nguồn mở được hỗ trợ bởi một cộng đồng sôi động.

5. Sự khác biệt giữa Memcached và Redis

Cơ sở để so sánhĐã ghi nhớ(Memcached)Redis
Độ trễ dưới mili giâyThời gian phản hồi của nó là dưới mili giây vì nó lưu trữ dữ liệu trong bộ nhớ, nơi đọc dữ liệu nhanh hơn đĩa.Thời gian phản hồi của nó là dưới mili giây vì nó lưu trữ dữ liệu trong bộ nhớ, nơi đọc dữ liệu nhanh hơn đĩa.
Nhà phát triển dễ sử dụngCú pháp của nó rất đơn giản để hiểu và sử dụng.Cú pháp của nó rất đơn giản để hiểu và sử dụng.
Kiến trúc phân tánKiến trúc phân tán của nó phân phối dữ liệu trên nhiều nút cho phép mở rộng thêm dữ liệu khi nhu cầu tăng lên.Kiến trúc phân tán của nó phân phối dữ liệu trên nhiều nút cho phép mở rộng thêm dữ liệu khi nhu cầu tăng lên.
Hỗ trợ nhiều ngôn ngữ lập trình khác nhauNó hỗ trợ các ngôn ngữ như C, C ++, java, python, v.v.Nó hỗ trợ các ngôn ngữ như C, C ++, java, python, v.v.
Cấu trúc dữ liệu nâng caoNó không hỗ trợ cấu trúc dữ liệu nâng cao.Nó hỗ trợ các cấu trúc dữ liệu nâng cao khác nhau như tập hợp, tập hợp được sắp xếp, băm, mảng bit, v.v.
Kiến trúc đa luồngNó hỗ trợ kiến ​​trúc đa luồng có nghĩa là nó có nhiều lõi xử lý. Điều này cho phép bạn xử lý nhiều hoạt động bằng cách mở rộng dung lượng máy tính.Nó không hỗ trợ kiến ​​trúc đa luồng.
Ảnh chụp nhanhNó không hỗ trợ các ảnh chụp nhanh.Redis cũng giữ dữ liệu trong đĩa như một bản sao lưu tại chỗ để khôi phục sau lỗi.
Nhân rộngNó không sao chép dữ liệu.Nó cung cấp một kiến ​​trúc bản sao chính để sao chép dữ liệu trên nhiều máy chủ và chia tỷ lệ các lần đọc cơ sở dữ liệu.
Giao dịchNó không hỗ trợ giao dịch.Nó hỗ trợ các giao dịch cho phép thực hiện một nhóm lệnh.
Lua ScriptingNó không hỗ trợ Lua Scripting.Nó cho phép bạn thực thi Lua Scripts giúp tăng hiệu suất và đơn giản hóa ứng dụng.
Hỗ trợ không gian địa lýNó không cung cấp hỗ trợ Không gian địa lý.Nó có các lệnh được xây dựng có mục đích hoạt động với dữ liệu không gian địa lý, tức là bạn có thể tìm khoảng cách giữa hai phần tử hoặc tìm tất cả các phần tử trong một khoảng cách nhất định.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!