2010-08-24 51 views
55

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

Tôi đã thấy tên của chủ chốt như sau đây:

users:bob 
color:blue 
item:bag 

Liệu ruột phím riêng biệt thành các loại và làm cho việc tìm kiếm các phím nhanh hơn? Nếu vậy, bạn có thể sử dụng nhiều dấu hai chấm khi đặt tên các khóa để chia nhỏ chúng thành các danh mục phụ 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ạ tôi không thể tìm thấy bất kỳ điều gì thảo luận về vấn đề này.

Trả lời

74

Dấu hai chấm đã có trong các phiên bản redis trước đó làm khái niệm lưu trữ dữ liệu không gian tên. Trong các phiên bản đầu 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 nó tất cả như là một chuỗi, do đó dấu hai chấm được sử dụng:

SET user:bob:email [email protected] 
SET user:bob:age 31 

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

HSET user:bob email [email protected] 
HSET user:bob age 31 

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

+1

Cảm ơn rất nhiều, chính xác những gì tôi cần biết :) – Ryan

+2

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

+2

Có thể khác chính xác so với toán tử điểm được sử dụng trong hầu hết các ngôn ngữ để truy cập đối tượng –

30

Dấu hai chấm là một cách để cấu trúc khóa. Chúng không được giải thích bằng 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 cách nào khác mà bạn thích hoặc không có dấu phân cách nào cả. Cá nhân tôi thích /, làm cho các phím của tôi trông giống như đường dẫn hệ thống tệp. Họ không có ảnh hưởng đến hiệu suất nhưng bạn không nên làm cho họ quá dài kể từ khi redis phải giữ tất cả các phím trong bộ nhớ.

Cấu trúc khóa tốt là điều quan trọng để tận dụng sức mạnh của lệnh sắp xếp, đó là câu trả lời của Redis để tham gia 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 cấu trúc khóa cho phép SORT tra cứu màu 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! –