Redis

Redis
Thiết kế bởiSalvatore Sanfilippo[1][2]
Phát triển bởiRedis[1][2]
Phát hành lần đầu10 tháng 5 năm 2009; 15 năm trước (2009-05-10)
Phiên bản ổn định
7.4.2[3] Sửa đổi tại Wikidata / 20 tháng 3 năm 2023; 2 năm trước (2023-03-20)
Kho mã nguồn
Viết bằngC
Hệ điều hànhUnix-like[4]
Thể loạiData structure store, key-value database
Giấy phépBSD 3-clause[5]
Websiteredis.io

Redis (/ˈrɛdɪs/; từ viết tắt của Remote Dictionary Server)[6] là một cơ sở dữ liệu phân tán trong bộ nhớ, được sử dụng như một cơ sở dữ liệu đệm lưu dữ liệu dạng cặp khóa-giá trị (key-value cache) thông qua các message broker trong bộ nhớ, trong khoảng thời gian tùy chọn.

Redis hỗ trợ nhiều loại cấu trúc dữ liệu trừu tượng khác nhau, như chuỗi, danh sách, bản đồ, tập hợp, tập hợp có sắp xếp, HyperLogLogs, bitmap, streams và các index không gian (spatial indices). Dự án này được phát triển và bảo trì bởi Salvatore Sanfilippo, bắt đầu từ năm 2009. Từ năm 2015 đến năm 2020, ông đã dẫn dắt một nhóm nhân sự cốt lõi của dự án được tài trợ bởi Redis Labs. Salvatore Sanfilippo rời khỏi Redis vào năm 2020. Redis hiện là phần mềm mã nguồn mở được phát hành theo giấy phép BSD 3-clause. Năm 2021, không lâu sau khi tác giả ban đầu và nhà bảo trì chính rời khỏi dự án, Redis Labs đã xóa từ "Labs" khỏi tên và hiện được biết đến đơn giản là "Redis".

Khái quát

[sửa | sửa mã nguồn]

Redis là một dạng cơ sở dữ liệu được phát triển trên ý tưởng về một hệ thống vừa có thể được là hệ lưu trữ dữ liệu vừa có thể là một bộ đệm cùng một lúc. Nó được thiết kế sao cho dữ liệu luôn được sửa đổi và đọc từ bộ nhớ chính của máy tính, tuy nhiên nó cũng hỗ trợ lưu trữ trên đĩa nhưng ở định dạng không phù hợp để truy cập dữ liệu ngẫu nhiên. Định dạng dữ liệu lưu trữ được thiết kế để có thể tái định dạng tái cấu trúc vào bộ nhớ sau khi hệ thống khởi động lại.

Với cách tổ chức này, Redis cung cấp một mô hình dữ liệu rất khác thường so với hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Các lệnh truy vấn của người dùng không mô tả để được thực thi bởi công cụ từ engine của cơ sở dữ liệu mà chỉ là các toán tử trên các loại dữ liệu trừu tượng đã cho. Để có thể hoạt động như một bộ đệm, dữ liệu phải được lưu trữ theo cách phù hợp sau này để truy xuất nhanh nhất. Việc truy xuất được thực hiện mà tức thời mà không cần sự trợ giúp từ hệ thống cơ sở dữ liệu dưới dạng chỉ mục (index), truy vấn phức hợp (aggregation) tập hợp hay các kiểu truy vấn phổ biến khác của RDBMS truyền thống. Thay vào đó Redis được triển khai sử dụng nhiều lệnh gọi hệ thống gọi là fork, để nhân bản các tiến trình lưu trữ dữ liệu, việc này cho phép trình cha tiếp tục phục vụ truy vấn từ máy khách trong khi tiến trình con vẫn thực hiện tạo bản sao dữ liệu trong bộ nhớ trên đĩa.

Redis nhanh chóng trở thành cơ sở dữ liệu lưu trữ dạng key-value phổ biến nhất theo bảng xếp hạng DB-Engines ranking của Solid IT.[7]

Ngôn ngữ hỗ trợ

[sửa | sửa mã nguồn]

Từ phiên bản 2.6, Redis hỗ trợ ngôn ngữ scripting phía server-side là Lua.[8]

Các ngôn ngữ lập trình được hỗ trợ phía client-side rất nhiều bao gồm:[9]

Ví dụ code client sử dụng Redis trên Python:

import redis

# Connect to Redis
redis_client = redis.Redis(host='localhost', port=6379, db=0)

# Set a value in Redis
redis_client.set('my_key', 'my_value')

# Get a value from Redis
value = redis_client.get('my_key')
print(value)

Kiểu dữ liệu

[sửa | sửa mã nguồn]

Redis ánh xạ khóa key tới các loại giá trị khác nhau. Một điểm khác biệt quan trọng giữa Redis và các hệ thống lưu trữ có cấu trúc khác là Redis không chỉ hỗ trợ dữ liệu kiểu chuỗi mà còn cả các kiểu dữ liệu trừu tượng khác như:

  • Danh sách chuỗi (List of string)
  • Tập hợp chuỗi (Set of string), đây là tập hợp các giá trị chưa sắp xếp và không lặp lại
  • Tập hợp chuỗi có xắp xếp, đây là tập hợp các giá trị không lặp lại được sắp xếp theo trọng số
  • Bảng mã băm (Hash table)
  • HyperLogLogs, đây là kiểu dữ liệu dùng để ước tính xấp xỉ giá trị cardinality, được Redis đưa ra từ phiên bản 2.8.9 vào tháng 4 năm 2014.[11]
  • Luồng đối tượng (Stream of entries), cho phép lưu trữ các trường giá trị và chuỗi tự động theo trình tự thời gian ở từng khóa key, được Redis đưa ra từ phiên bản 5.0 vào tháng 10 năm 2018[11]
  • Dữ liệu không gian (Geospatial data) được triển khai sử dụng kỹ thuật geohash, được Redis đưa ra từ phiên bản 3.2.[12]

Kiểu của một value sẽ xác định các toán tử (hay lệnh) nào có thể được sử dụng với nó. Redis hỗ trợ các tập lệnh hở mức cao phía server-side như các lệnh giao cắt (intersection), tập hợp (union) và tìm tâp khác biệt (difference) giữa các kiểu tập hợp không sắp xếp, danh sách và các tập hợp có sắp xếp.

Một số kiểu dữ liệu khác được hỗ trợ qua Redis Modules API như:[13]

  • JSON – RedisJSON[14] triển khai trên chuẩn ECMA-404 (chuẩn JavaScript Object Notation Data Interchange Standard) như một dạng dữ liệu native.[15]
  • Graph – RedisGraph[16] triển khai truy vấn graph trên thuộc tính
  • Time series – RedisTimeSeries[17] triển khai các cấu trúc dữ liệu theo thời gian (time series data structure)
  • Bloom filter, Cuckoo filter, Count–min sketch, và Top-K – RedisBloom[18] triển khai tập hợp dữ liệu cấu trúc xác suất trên Redis

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ a b Bernardi, Stefano (ngày 4 tháng 1 năm 2011). "An interview with Salvatore Sanfilippo, creator of Redis, working out of Sicily". EU-Startups. Menlo Media. Lưu trữ bản gốc ngày 7 tháng 3 năm 2016. Truy cập ngày 17 tháng 4 năm 2023.
  2. ^ a b Haber, Itamar (ngày 15 tháng 7 năm 2015). "Salvatore Sanfilippo: Welcome to Redis Labs". Redis Labs. Lưu trữ bản gốc ngày 29 tháng 1 năm 2023. Truy cập ngày 17 tháng 4 năm 2023.
  3. ^ "Release 7.4.2". ngày 6 tháng 1 năm 2025. Truy cập ngày 29 tháng 1 năm 2025.
  4. ^ "Introduction to Redis". Lưu trữ bản gốc ngày 9 tháng 3 năm 2023. Truy cập ngày 17 tháng 4 năm 2023. Redis is written in ANSI C and works in most POSIX systems like Linux, *BSD, OS X without external dependencies.
  5. ^ "Copying". GitHub. ngày 4 tháng 3 năm 2022. Lưu trữ bản gốc ngày 14 tháng 2 năm 2020. Truy cập ngày 17 tháng 4 năm 2023.
  6. ^ "Redis FAQ". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 13 tháng 4 năm 2023. Truy cập ngày 13 tháng 4 năm 2023.
  7. ^ "DB-Engines Ranking". DB-Engines (bằng tiếng Anh). Lưu trữ bản gốc ngày 15 tháng 8 năm 2019. Truy cập ngày 17 tháng 4 năm 2023.
  8. ^ "EVAL". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 30 tháng 3 năm 2023. Truy cập ngày 17 tháng 4 năm 2023.
  9. ^ "Get started using Redis clients". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 6 tháng 4 năm 2023. Truy cập ngày 17 tháng 4 năm 2023.
  10. ^ "CRAN - Package rredis". Bản gốc lưu trữ ngày 20 tháng 6 năm 2013. Truy cập ngày 1 tháng 7 năm 2013.
  11. ^ a b "Redis 5.0 is here!". ngày 22 tháng 10 năm 2018. Lưu trữ bản gốc ngày 14 tháng 3 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
  12. ^ "Redis 3.2 Release Notes". GitHub. Lưu trữ bản gốc ngày 4 tháng 3 năm 2017. Truy cập ngày 10 tháng 3 năm 2017.
  13. ^ "Redis Modules: an introduction to the API". redis.io. Lưu trữ bản gốc ngày 7 tháng 12 năm 2019. Truy cập ngày 10 tháng 7 năm 2019.
  14. ^ "RedisJSON - a JSON data type for Redis". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 21 tháng 3 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
  15. ^ "RedisJSON". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 21 tháng 3 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
  16. ^ "RedisGraph - a graph database module for Redis". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 6 tháng 4 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
  17. ^ "RedisTimeSeries - Time-Series data structure for Redis". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 6 tháng 4 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
  18. ^ "RedisBloom - Probabilistic Datatypes Module for Redis". Redis (bằng tiếng Anh). Lưu trữ bản gốc ngày 6 tháng 4 năm 2023. Truy cập ngày 18 tháng 4 năm 2023.
Chúng tôi bán
Bài viết liên quan
Vì sao Độ Mixi lại nổi tiếng đến thế?
Vì sao Độ Mixi lại nổi tiếng đến thế?
Quay trở lại vài năm trước, nhắc đến cái tên Mixigaming, chắc hẳn chả mấy ai biết đến
Download Bokutachi wa Benkyou ga Dekinai 2 Vetsub
Download Bokutachi wa Benkyou ga Dekinai 2 Vetsub
Những mẩu truyện cực đáng yêu về học đường với những thiên tài
Tổng quan nguồn gốc và thế giới Goblin Slayer
Tổng quan nguồn gốc và thế giới Goblin Slayer
Khi Truth và Illusion tạo ra Goblin Slayer, số skill points của GS bình thường, không trội cũng không kém, chỉ số Vitality (sức khỏe) tốt, không bệnh tật, không di chứng, hay có vấn đề về sức khỏe
Khám phá bên trong cửa hàng tiện lợi Speed L
Khám phá bên trong cửa hàng tiện lợi Speed L
Speed L là một chuỗi cửa hàng tiện lợi của siêu thị Lotte Mart – Hàn Quốc đã có mặt tại Thành phố Hồ Chí Minh. Lotte Mart cho ra mắt cửa hàng tiện lợi đầu tiên tại tòa nhà Pico Cộng Hòa, với các sản phẩm phục vụ nhu cầu tiêu dùng hàng ngày