Nó đơn giản như lưu trữ mỗi người dùng hai lần. Một lần với khóa của id và một lần với khóa của tên người dùng.
Cách nhỏ gọn hơn để thực hiện việc này về bộ nhớ là phải có tên người dùng chính cho id, do đó truy vấn tên người dùng của bạn sẽ giống như: truy vấn theo tên người dùng, nhận id; đặt vào id, nhận thông tin.
Thật không may, không có cách nào tốt để có cùng dữ liệu thực tế được khóa bằng hai khóa khác nhau.
Ví dụ, khi bạn sẽ chèn một người dùng mới và sau đó truy vấn cho nó:
redis 127.0.0.1:6379> HMSET id:4532143215432 username davejlong email [email protected]
OK
redis 127.0.0.1:6379> HMSET user:davejlong id 4532143215432 email [email protected]
OK
redis 127.0.0.1:6379> HGET id:4532143215432 username
"davejlong"
redis 127.0.0.1:6379> HGET user:davejlong id
"4532143215432"
redis 127.0.0.1:6379> HMGET user:davejlong email id
1) "[email protected]"
2) "4532143215432"
redis 127.0.0.1:6379> DEL user:davejlong
(integer) 1
redis 127.0.0.1:6379> DEL id:4532143215432
(integer) 1
Chú ý rằng khi tôi đang tạo ra cho người sử dụng, tôi sử dụng HMSET hai lần. Bây giờ, tôi có thể truy vấn với tên người dùng hoặc id. Tôi cũng phải xóa cả hai khóa ngay bây giờ.
Nguồn
2011-10-28 20:16:15
Tôi đã bỏ qua điều này với "Cách nhỏ gọn hơn để làm việc này ..." nhưng đã quá lười biếng để loại bỏ nó. +1 –
@philpirozhkov cái nào ... –
Rất tiếc, tôi đã bỏ lỡ điểm vì bạn không thêm khả năng tìm kiếm bằng thư. 'SET người dùng: [email protected] 1' và bạn có thể tìm thấy bằng thư –