Khái niệm In-memory Database? Redis và cách cài đặt Redis cho Windows.

In-memory Database (IMDB)

IMDB hay In-memory Database ở đây là một loại cơ sở dữ liệu sử dụng bộ nhớ chính của máy tính để lưu trữ. Sự ra đời của IMDB để đáp ứng nhu cầu cải thiện tốc độ xử lý dữ liệu, giao dịch và traffic. Sỡ dĩ xảy ra những vấn đề như vậy là do sự gia tăng về chất lượng và sản phẩm của phần cứng. Như định luật Moore thì số lượng transistor (link kiện bán dẫn chủ động) tăng lên gấp đôi sau hai năm, theo cách đố giá thành của máy tính sẽ giảm xuống phân nửa.

Max Roser - https://ourworldindata.org/uploads/2019/05/Transistor-Count-over-time-to-2018.png

Điều đó dẫn đến việc sự phát triển vượt bậc về tốc độ xử lý của máy tính và những loại máy tính hiện đại hơn được ra đời. Đối với những cơ sơ dữ liệu truyền thống (disk-based database hay disk-optimized database) thì điều này gây nên điểm nghẽn trong hệ thống hay "tắt cổ chai" (bottleneck).

Lý do IMDB có thể giải quyết được các vấn đề nan giải ấy là vì IMDB là cơ sở dữ liệu dựa trên quan hệ bộ nhớ, bỏ qua hết các vấn đề về truy cập ổ đĩa cứng và tương tác thẳng với bộ nhớ chính. Vì sử dụng RAM làm bộ nhớ chính nên khi truy vấn các dữ liệu không cần phải lấy dữ liệu cache từ ổ cứng lên RAM. Và vì tốc độ ghi/đọc dữ liệu của RAM nhanh hơn nên tốc độ truy vấn của cơ sở dữ liệu trên bộ nhớ cũng khác biệt với cơ sở dữ liệu truyền thống.

Có rất nhiều công nghệ về IMDB như Redis, Memcached, Hazelcast, SQLite và mỗi IMDB sẽ có một khả năng và thế mạnh khác nhau ví dụ như Redis được đánh giá là một IMDB có tốc độ xử lý cực kì cao nên rất được ưa chuộng bới cộng đồng developer, nhưng nếu xét về "Độ sẵn sàng cao" (High Availability) thì Hazelcast được chuộng hơn.

What are the best In-Memory Databases Tools?
Redis, Hazelcast, Aerospike, SAP HANA, and MemSQL are the most popular tools in the category “In-Memory Databases”. “Performance” is the primary reason developers pick Redis over its competitors, while “High Availibility” is the reason why Hazelcast was chosen.
Tổng hợp các tools IMDB trên StackShare

Redis và cách Redis hoạt động?

Redis hay Remote Dictionary Server (Máy chủ từ điển từ xa) là một key-value datastorage (kho dữ liệu khóa-giá trị) trong bộ nhớ mã nguồn mở cung cấp một khả năng truy cấp nhanh chóng. Redis thường được sử dụng như một database, cache hay message broker. Về cách thức hoạt động của Redis theo như AWS:

Toàn bộ dữ liệu Redis nằm trong bộ nhớ, trái với cơ sở dữ liệu thường  lưu dữ liệu trên ổ đĩa hoặc ổ SSD. Bằng cách loại bỏ sự cần thiết phải  truy cập ổ đĩa, kho dữ liệu trong bộ nhớ như Redis tránh được sự chậm  trễ do thời gian tìm kiếm và có thể truy cập dữ liệu trong vài micrô  giây. Redis có cấu trúc dữ liệu linh hoạt, độ khả dụng cao, dữ liệu  không gian địa lý, ngôn ngữ kịch bản Lua, giao dịch, lưu trữ lâu dài  trên ổ đĩa và hỗ trợ cụm, giúp xây dựng các ứng dụng quy mô Internet  theo thời gian thực dễ dàng hơn.

Độ phủ sống của Redis

Sức mạnh và tốc độ, hiệu năng của Redis là không thể bàn cãi khi hiện nay đây cũng là một trong những IMDB tool được ưa chuộng và sử dụng trong rất nhiều phần mềm, ứng dụng lớn. Dựa theo thông tin trên StackShare thì Redis được sử dụng bởi rất nhiều ông lớn trong làng công nghệ như Twitter, Airbnb, Uber, Instagram...và nhiều gã khổng lồ khác.

Các công ty sử dụng Redis - StackShare

Cách cài đặt Redis cho Windows

Thật sự thì hiện nay Redis chưa có một stable version tối ưu cho Windows và nói thẳng ra thì Redis vốn dĩ không được phát triển trên môi trường Windows nên nếu máy của bạn là đang chạy Linux thì đấy là một lợi thế khi làm việc với Linux. Tuy nhiên nếu là Windows thì cũng không sao nhé vì trong bài này mình sẽ giải quyết vấn đề đó.

Bước 1: Cài đặt Windows Subsytem Linux (WSL)

Để có thể cài đặt và chạy Redis server trên Windows thì các bạn cần có sẵn WSL trong máy trước nhé. Nếu các bạn chưa có WSL thì có thể tham khảo qua bài viết này của mình dưới đây

Góc Của Chung | WSL - Một cuộc cách mạng mới cho người dùng Windows
Là một lập trình viên, đã bao giờ các bạn cảm thấy khó khăn khi hệ điều hành cửa sổ có quá nhiều hạn chế? Bạn được khuyên là để trở thành một lập trình viên xịn thì không nên xài cửa sổ (Windows)?

Bước 2: Cài đặt Redis

Mặc dù Redis không được phát triển trên Windows một cách chính thức, tuy nhiên, MSOpenTech đã có những phiên bản Redis dành cho cộng đồng Windows được phát triển cách đây 4 năm trước (2016) và đã dừng lại ở bản pre-release của phiên bản 3.2.1. Bước tiếp theo là các bạn cần truy cập vào Github repo của MSOpenTech Redis qua liên kết

microsoftarchive/redis
Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

Sau đó kéo xuống phần Redis on Windows ở file README.md và chọn release page nhé

Redis on Windows trong file README.md

Ở phần release page, phiên bản pre-release hiện tại là 3.2.100 nhưng mình khuyên các bạn nên cài đặt phiên bản 3.0.504 nhé.

Phiên bản Redis 3.0.504 sau khi vào release page

Sau đó là cài đặt archive phiên bản 3.0.504 với đuôi file msi. Tải xuống thành công file msi thì sẽ hiện lên một giao diện Setup Wizard như sau

Setup Wizard của Redis

Chạy Setup Wizard và reboot lại máy thì máy của bạn đã cài đặt thành công Redis. Giờ thì mở WSL lên để kiểm tra kết nối tới Redis Server nhé (Redis Server sẽ được chạy trên localhost:6379). Port này được khởi tạo trong file configuration của redis (ví dụ /etc/redis/redis.conf) khi các bạn cài đặt, nến nếu muốn đổi port thì cứ vào file này thay đổi dữ liệu nhé. Các bạn chạy thử lệnh

redis-server

Nếu mà terminal trả về như sau có nghĩa là redis server của bạn đã được setup nhé

Sau đó mình sẽ test thử vài lệnh của redis qua redis-cli. Các bạn chạy lệnh

redis-cli

Để kiểm tra xem redis-cli đã kết nối tới server thì tụi mình sẽ dùng lệnh ping. Nếu terminal trả về là pong thì có nghĩa là server hoạt động ổn định nhé

Thông qua redis-cli mình sẽ set 1 key có tên là name và value là  "Chung Quan Tin" qua cấu trúc là

Ở đây lệnh SET của redis có cấu trúc là

SET [key] [value] [EX|NX] [NX|XX]

Trong đó:

  • Key: Khóa của dữ liệu được lưu trữ
  • Value: Giá trị của dữ liệu được lưu trữ
  • EX, PX: Thời gian hết hạn của dữ liệu (thường được gán cho những dữ liệu tạm thời) với EX là thời gian theo giây và PX là theo mili giây.
  • NX, XX: Điều kiều tạo khóa mới với NX là khi khoá không tồn tại và XX là khóa đã tồn tại

Sau khi đã set dữ liệu name-"Chung Quan Tín" và terminal trả về là OK thì có nghĩa là thành công rồi nhé.

GET thử dữ liệu xem sao nè

KẾT

Qua đó cũng thấy được những cái lợi mà IMDB nói chung và Redis đem lại. Vậy còn chờ gì mà không làm thử một back-end server tương tác với Redis đi nào.

Nếu các bạn thấy thích bài viết này thì hãy để lại bình luận ở phía dưới để cho mình có động lực viết tiếp những bài viết hay hơn nhé . Và nếu có điểm nào mình có thể cải thiện để bài viết tốt hơn thì hãy cứ góp ý bên dưới luôn nha.🧡🧡🧡

Góc Của Chung

Góc Của Chung