Redis, viết tắt của Remote Dictionary Server, là một kho lưu trữ cấu trúc dữ liệu khóa-giá trị trong bộ nhớ mã nguồn mở, được cấp phép BSD, được viết bằng ngôn ngữ C bởi Salvatore Sanfillipo và được phát hành lần đầu tiên vào ngày 10 tháng 5 năm 2009. Tùy thuộc vào cách nó được cấu hình. , Redis có thể hoạt động giống như một cơ sở dữ liệu, một bộ nhớ cache hoặc một nhà môi giới thông báo. Điều quan trọng cần lưu ý là Redis là một hệ thống cơ sở dữ liệu NoSQL. Điều này ngụ ý rằng không giống như các hệ thống cơ sở dữ liệu hướng SQL (Ngôn ngữ truy vấn có cấu trúc) như MySQL, PostgreSQL và Oracle, Redis không lưu trữ dữ liệu trong các lược đồ cơ sở dữ liệu được xác định rõ ràng tạo thành bảng, hàng và cột. Thay vào đó, Redis lưu trữ dữ liệu trong các cấu trúc dữ liệu nên rất linh hoạt khi sử dụng. Lưu trữ của ScaleGrid cho Redis ™ * cho phép bạn tự động hóa các hoạt động tốn nhiều thời gian của mình cho nhiều trường hợp sử dụng Redis khác nhau. Trong blog này, chúng tôi phác thảo các trường hợp sử dụng Redis hàng đầu theo các loại cấu trúc dữ liệu cốt lõi khác nhau.
Cấu trúc dữ liệu trong Redis
Hãy cùng xem qua một số kiểu dữ liệu mà Redis hỗ trợ. Trong Redis, chúng ta có các chuỗi, danh sách, tập hợp, tập hợp được sắp xếp và hàm băm, mà chúng ta sẽ đề cập trong bài viết này. Ngoài ra, chúng tôi có các kiểu dữ liệu khác như bitmap, siêu nhật ký và chỉ mục không gian địa lý với các truy vấn bán kính và luồng. Mặc dù có một số công cụ Redis GUI được viết bởi cộng đồng Redis, dòng lệnh cho đến nay vẫn là ứng dụng khách quan trọng nhất, không giống như những người dùng cơ sở dữ liệu SQL phổ biến thường thích các hệ thống quản lý GUI, chẳng hạn như phpMyAdmin cho MySQL và PgAdmin cho PostgreSQL.
Hãy để chúng tôi xem xét kỹ hơn các loại dữ liệu tồn tại trong Redis.
Chuỗi Redis
Chuỗi Redis là loại giá trị Redis cơ bản nhất được sử dụng bởi tất cả các kiểu cấu trúc dữ liệu khác và khá giống với chuỗi trong các ngôn ngữ lập trình khác như Java hoặc Python. Các chuỗi, có thể chứa bất kỳ kiểu dữ liệu nào, được coi là an toàn nhị phân và có độ dài tối đa là 512MB. Dưới đây là một số lệnh hữu ích cho chuỗi Redis:
Để lưu trữ một chuỗi ‘ john 'Dưới một khóa, chẳng hạn như' sinh viên ' trong Redis, chạy lệnh:
ĐẶT “học sinh” “john”
Để truy xuất chuỗi, hãy sử dụng lệnh GET như hình:
NHẬN “học sinh”
Để xóa chuỗi có trong khóa, hãy sử dụng lệnh DEL:
DEL “học sinh”
Trường hợp sử dụng chuỗi Redis
- Bộ nhớ cache phiên: Nhiều trang web tận dụng Redis Strings để tạo bộ đệm phiên nhằm tăng tốc trải nghiệm trang web của họ bằng cách lưu vào bộ đệm các đoạn hoặc trang HTML. Vì dữ liệu được lưu trữ tạm thời trong RAM, thuộc tính này làm cho Redis trở thành lựa chọn hoàn hảo làm bộ đệm phiên. Nó có thể tạm thời lưu trữ dữ liệu người dùng cụ thể, chẳng hạn như các mặt hàng được lưu trữ trong giỏ hàng trong cửa hàng trực tuyến, điều quan trọng là người dùng của bạn không bị mất dữ liệu của họ trong trường hợp họ đăng xuất hoặc mất kết nối.
- Hàng đợi: Bất kỳ ứng dụng nào giải quyết vấn đề tắc nghẽn giao thông, nhắn tin, thu thập dữ liệu, quản lý công việc hoặc định tuyến trình đóng gói đều nên xem xét Hàng đợi Redis, vì điều này có thể giúp bạn quản lý kích thước hàng đợi của mình theo tỷ lệ đến và đi để phân phối tài nguyên.
- Thanh toán sử dụng &tính tiền: Một trường hợp sử dụng ít được biết đến hơn cho Redis Strings là đo thời gian thực cho các mô hình định giá dựa trên mức tiêu thụ. Điều này cho phép các nền tảng SaaS lập hóa đơn dựa trên mức sử dụng thực tế để đo lường hoạt động của khách hàng, chẳng hạn như trong ngành viễn thông, nơi họ có thể tính phí tin nhắn văn bản hoặc số phút.
Danh sách Redis
Danh sách chứa các chuỗi được sắp xếp theo thứ tự chèn của chúng. Với Redis Lists, bạn có thể thêm các mục vào đầu hoặc đuôi của danh sách, điều này rất hữu ích cho các công việc xếp hàng. Nếu có nhiều công việc khẩn cấp hơn mà bạn yêu cầu phải được thực hiện, chúng có thể được đẩy lên trước các công việc có mức độ ưu tiên thấp hơn khác trong hàng đợi. Chúng tôi sẽ sử dụng lệnh LPUSH để chèn một phần tử vào đầu hoặc bên trái của chuỗi và lệnh RPUSH để chèn vào đuôi hoặc bên phải chuỗi của chúng tôi. Hãy xem một ví dụ:
Danh sách LPUSH x # bây giờ danh sách là "x"
Danh sách LPUSH y # bây giờ danh sách là "y", "x"
Danh sách RPUSH z # bây giờ danh sách là "y", "x", "z" (lưu ý cách phần tử ‘z’ được thêm vào cuối danh sách bằng lệnh RPUSH)
Các trường hợp sử dụng trong danh sách Redis
- Trang web Mạng Xã hội: Các nền tảng xã hội như Twitter sử dụng Redis Lists để điền dòng thời gian hoặc nguồn cấp dữ liệu trang chủ của họ và có thể tùy chỉnh đầu nguồn cấp dữ liệu của họ bằng các bài đăng hoặc câu chuyện thịnh hành.
- Nguồn cấp RSS: Tạo nguồn cấp dữ liệu tin tức từ các nguồn tùy chỉnh, nơi bạn có thể lấy các bản cập nhật mới nhất và cho phép những người theo dõi quan tâm đăng ký nguồn cấp dữ liệu RSS của bạn.
- Bảng xếp hạng: Các diễn đàn như Reddit và các nền tảng bỏ phiếu khác tận dụng Redis Lists để thêm các bài viết vào bảng xếp hạng và sắp xếp theo các mục được bình chọn nhiều nhất.
Tìm hiểu cách tạo nguồn cấp dữ liệu Twitter của riêng bạn trong các bài đăng trên Bộ nhớ đệm của chúng tôi bằng cách sử dụng bài đăng trên blog Node.js, Redis và Socket.io.
Các trường hợp sử dụng #Redis hàng đầu theo các loại cấu trúc dữ liệu cốt lõiNhấp vào TweetBộ Redis
Bộ Redis là kiểu dữ liệu mạnh mẽ hỗ trợ các hoạt động mạnh mẽ như giao lộ và liên kết. Chúng không theo thứ tự nào và thường được sử dụng khi bạn muốn thực hiện đánh giá và xem mối quan hệ giữa các biến khác nhau. Các tập hợp có tốc độ tương đối nhanh và bất kể số lượng phần tử bạn đã lưu trữ là bao nhiêu, việc thêm hoặc xóa các mục trong một tập hợp sẽ mất như nhau. Hơn nữa, các tập hợp không cho phép các khóa trùng lặp hoặc các thành viên trùng lặp, vì vậy một khóa được thêm nhiều lần trong một tập hợp sẽ đơn giản bị bỏ qua. Điều này được điều khiển bởi một chức năng được gọi là SADD để tránh trùng lặp nhiều mục nhập giống nhau. Thuộc tính SADD có thể được sử dụng khi kiểm tra các giá trị duy nhất và cũng có thể để lập lịch các công việc chạy trong nền, bao gồm các công việc cron là các tập lệnh tự động.
Chúng đặc biệt hữu ích cho việc phân tích hành vi của khách hàng trong thời gian thực cho trang web mua sắm trực tuyến của bạn. Ví dụ:nếu bạn đang điều hành một cửa hàng quần áo trực tuyến, Redis Sorted Sets sử dụng kỹ thuật đối sánh mối quan hệ như liên kết, giao lộ và trừ đi (thường được áp dụng trong biểu đồ Venn) để đưa ra bức tranh chính xác về hành vi của khách hàng. Bạn có thể truy xuất dữ liệu về các kiểu mua sắm giữa các giới tính, sản phẩm quần áo nào bán được nhiều nhất và giờ nào có doanh số bán hàng cao nhất.
Redis đặt Trường hợp sử dụng
- Phân tích Doanh số Thương mại Điện tử: Nhiều cửa hàng trực tuyến sử dụng Redis Sets để phân tích hành vi của khách hàng, chẳng hạn như tìm kiếm hoặc mua hàng cho một danh mục sản phẩm hoặc danh mục phụ cụ thể. Ví dụ:một chủ hiệu sách trực tuyến có thể tìm hiểu xem có bao nhiêu khách hàng đã mua sách y khoa trong Tâm lý học.
- Theo dõi Địa chỉ IP: Redis Sets là một công cụ tuyệt vời dành cho các nhà phát triển muốn phân tích tất cả các địa chỉ IP đã truy cập vào một trang web hoặc bài đăng trên blog cụ thể và có thể bỏ qua tất cả các bản sao cho những khách truy cập duy nhất bằng chức năng SADD của họ.
- Lọc Nội dung Không thích hợp: Đối với bất kỳ ứng dụng nào thu thập thông tin đầu vào của người dùng, bạn nên triển khai tính năng lọc nội dung để tìm các từ không phù hợp và bạn có thể thực hiện việc này với Redis Sets bằng cách thêm các từ bạn muốn lọc vào phím SET và lệnh SADD.
Bộ được sắp xếp
Như tên cho thấy, Redis Sorted Sets là một tập hợp các chuỗi chỉ định thứ tự cho các phần tử của bạn và là một trong những cấu trúc dữ liệu nâng cao nhất trong Redis. Những thứ này tương tự như Bộ Redis, chỉ là Bộ không có thứ tự trong khi Bộ được sắp xếp liên kết mọi thành viên với một điểm số. Tập hợp đã sắp xếp được biết đến là rất nhanh, vì bạn có thể trả lại danh sách có thứ tự và truy cập các phần tử trong thời gian ngắn nhất có thể.
Redis Sorted Sets Trường hợp Sử dụng
- Nền tảng Hỏi &Đáp: Nhiều nền tảng Hỏi và Đáp như Stack Overflow và Quora sử dụng Redis Sorted Sets để xếp hạng các câu trả lời được bình chọn cao nhất cho mỗi câu hỏi được đề xuất nhằm đảm bảo nội dung chất lượng tốt nhất được liệt kê ở đầu trang.
- Bảng điểm ứng dụng trò chơi: Các ứng dụng trò chơi trực tuyến tận dụng Redis Sorted Sets để duy trì danh sách điểm số cao của chúng, vì điểm số có thể được lặp lại, nhưng các chuỗi chứa thông tin chi tiết về người dùng duy nhất thì không thể.
- Dịch vụ Lập lịch Tác vụ: Redis Sorted Sets là một công cụ tuyệt vời cho dịch vụ lập lịch tác vụ, vì bạn có thể liên kết điểm số để xếp hạng mức độ ưu tiên của một tác vụ trong hàng đợi của mình. Đối với bất kỳ nhiệm vụ nào không có điểm được ghi chú, bạn có thể sử dụng tùy chọn WEIGHTS để mặc định là 1.
- Băm theo địa lý: API lập chỉ mục địa lý của Redis sử dụng Tập hợp được sắp xếp cho kỹ thuật Geo Hash cho phép bạn lập chỉ mục các vị trí dựa trên vĩ độ và kinh độ, biến dữ liệu đa chiều thành dữ liệu tuyến tính.
Redis Hashes
Redis Hashes là ánh xạ giữa các trường chuỗi và giá trị chuỗi. Đây là kiểu dữ liệu chuyển đến nếu về cơ bản bạn cần tạo một vùng chứa các trường duy nhất và giá trị của chúng để đại diện cho các đối tượng. Hàm băm cho phép bạn lưu trữ một lượng trường kha khá, lên đến 232 - 1 cặp giá trị trường (hơn 4 tỷ), trong khi chiếm rất ít dung lượng. Bạn nên sử dụng Redis Hashes bất cứ khi nào có thể, vì bạn có thể sử dụng một phiên bản Redis nhỏ để lưu trữ hàng triệu đối tượng. Bạn có thể sử dụng các thao tác lệnh băm cơ bản, chẳng hạn như lấy, đặt, tồn tại, ngoài nhiều thao tác nâng cao.
Redis Hashes Use Case
- Hồ sơ Người dùng: Nhiều ứng dụng web sử dụng Redis Hashes cho hồ sơ người dùng của họ, vì họ có thể sử dụng một hash duy nhất cho tất cả các trường người dùng, chẳng hạn như tên, họ, email, mật khẩu, v.v.
- Bài đăng của Người dùng: Các nền tảng xã hội như Instagram tận dụng Redis Hashes để ánh xạ tất cả các ảnh hoặc bài đăng của người dùng đã lưu trữ trở lại với một người dùng duy nhất. Cơ chế băm cho phép họ tìm kiếm và trả về các giá trị rất nhanh chóng, phù hợp với dữ liệu trong bộ nhớ và tận dụng độ bền của dữ liệu trong trường hợp một trong các máy chủ của họ bị chết.
- Lưu trữ Chỉ số Nhiều Người thuê: Các ứng dụng dành cho nhiều người thuê có thể tận dụng hàm băm của Redis để ghi lại và lưu trữ các chỉ số sản phẩm và doanh số của họ theo cách đảm bảo sự tách biệt rõ ràng giữa mỗi người thuê, vì các hàm băm có thể được mã hóa hiệu quả trong một không gian bộ nhớ rất nhỏ.
Ai sử dụng Redis?
Redis đã tìm thấy thị phần khổng lồ trên các ngành du lịch và khách sạn, diễn đàn cộng đồng, truyền thông xã hội, SaaS và thương mại điện tử. Một số công ty hàng đầu sử dụng Redis bao gồm Pinterest, Uber, Slack, Airbnb, Twitter và Stack Overflow. Dưới đây là một số thống kê về mức độ phổ biến của Redis ngày nay:
- 4.107 công ty đã báo cáo sử dụng Redis trên StackShare
- 8.759 nhà phát triển đã tuyên bố sử dụng Redis trên StackShare
- 38.094 người dùng GitHub đã gắn dấu sao Redis
- cơ sở dữ liệu được xếp hạng thứ 8 trên DB-Engines với số điểm 144,08