Mục đích của dấu hai chấm trong các phím Redis là gì


77

Tôi đang học cách sử dụng Redis cho một dự án của mình. Có một điều tôi chưa hiểu chính xác là dấu hai chấm được dùng để làm gì trong tên các phím.

Tôi đã thấy tên của khóa như sau:

users:bob
color:blue
item:bag

Dấu hai chấm có phân tách các khóa thành các danh mục và giúp tìm khóa nhanh hơn không? Nếu vậy, bạn có thể sử dụng nhiều dấu hai chấm khi đặt tên khóa để chia chúng thành các danh mục con không? Cuối cùng, họ có liên quan gì đến việc xác định các cơ sở dữ liệu khác nhau trong máy chủ Redis không?

Tôi đã đọc qua tài liệu và thực hiện nhiều tìm kiếm trên Google về vấn đề này nhưng kỳ lạ là tôi không thể tìm thấy bất cứ điều gì thảo luận về điều này.

Câu trả lời:


97

Dấu hai chấm đã có trong các phiên bản redis trước đó như một khái niệm để lưu trữ dữ liệu không gian tên. Trong các phiên bản đầu tiên, redis chỉ hỗ trợ chuỗi, nếu bạn muốn lưu trữ email và tuổi 'bob', bạn phải lưu trữ tất cả dưới dạng chuỗi, vì vậy dấu hai chấm được sử dụng:

SET user:bob:email bob@example.com
SET user:bob:age 31

Chúng không có đặc điểm xử lý hoặc hiệu suất đặc biệt nào trong redis, mục đích duy nhất là đặt tên cho dữ liệu để tìm lại. Ngày nay, bạn có thể sử dụng hàm băm để lưu trữ hầu hết các khóa được tô màu:

 HSET user:bob email bob@example.com
 HSET user:bob age 31

Bạn không cần phải đặt tên cho băm là "user: bob", chúng tôi có thể đặt tên nó là "bob", nhưng đặt tên cho nó bằng tiền tố người dùng, chúng tôi ngay lập tức biết thông tin nào mà băm này nên / có thể có.


5
Tôi tự hỏi tại sao lại :được chọn khi .có vẻ phổ biến hơn trong các ngôn ngữ khác nhau cho loại điều này.
CivFan

3
Có lẽ là chính xác khác nhau từ điểm-nhà điều hành được sử dụng trong hầu hết các ngôn ngữ để tiếp cận đối tượng
Tobias P.

40

Dấu hai chấm là một cách để cấu trúc các phím. Chúng không được giải thích bởi redis theo bất kỳ cách nào. Bạn cũng có thể sử dụng bất kỳ dấu phân tách nào khác mà bạn thích hoặc không có gì cả. Cá nhân tôi thích /, điều này làm cho các khóa của tôi trông giống như đường dẫn hệ thống tệp. Chúng không ảnh hưởng đến hiệu suất nhưng bạn không nên tạo chúng quá lâu vì redis phải giữ tất cả các phím trong bộ nhớ.

Một cấu trúc khóa tốt rất quan trọng để tận dụng sức mạnh của lệnh sắp xếp, đây là câu trả lời cho phép nối của SQL.

GET user:bob:color   -> 'blue'
GET user:alice:color -> 'red'

SMEMBERS user:peter:friends -> alice, bob

SORT user:peter:friends BY NOSORT GET user:*:color   -> 'blue', 'red'

Bạn có thể thấy rằng cấu trúc khóa cho phép SORT tra cứu màu sắc của người dùng bằng cách tham chiếu các khóa có cấu trúc.


1
Sử dụng / là một gợi ý tuyệt vời!
Saurabh Hirani

5
Trong khi thử dùng Redis, tôi nhận ra rằng các công cụ giao diện người dùng như redis Commander ( github.com/joeferner/redis-commander ) hiển thị hình ảnh tốt hơn khi các phím được cấu trúc bằng dấu hai chấm thay vì dấu gạch chéo. Vì vậy, lá phiếu của tôi cho dấu hai chấm vì ý nghĩa lịch sử của nó.
Pavan Kumar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.