2015-06-09 13 views
6

Tôi lưu trữ dữ liệu của tôi trong redis. Tôi lưu trữ trong một nguyên nó guid, createday, và nó kích thước.Redis/Nhận tất cả các khóa & giá trị từ redis với tiền tố

Vì vậy, tôi xác định như sau:

var dbclient1 = db.createClient(); 
dbclient1.hmset("doc:3743-da23-dcdf-3213", "date", "2015-09-06 00:00:01", "size", "203") 
dbclient1.zadd("cache", 32131, "37463-da23-dcdf-3213") 

tôi muốn xem tất cả các file của tôi trong db của tôi. Vì vậy, tôi thử các cách sau:

dbclient1.hgetall("doc:*", function (err, res){ 
     console.log(err) 
     console.log(res) 
}) 

nhưng res là undefined. Tôi làm nó như thế nào?

Trả lời

7

HGETALL trả về tất cả các lĩnh vực và các giá trị của các hash được lưu trữ tại chìa khóa, bạn không thể chỉ định một mặt nạ: http://redis.io/commands/hgetall

Bạn có thể gọi KEYS doc:* để có được một danh sách tất cả các phím phù hợp với tiêu chí của bạn và sau đó nhận được tất cả các giá trị trong một vòng lặp.

Nhưng hãy đọc một phần về tiềm năng đạt hiệu suất trước khi bạn làm điều đó: http://redis.io/commands/keys

+5

Không sử dụng phím trên sản xuất, nó là quá nguy hiểm. Sử dụng SCAN thay vào đó, bạn có lọc VỚI MATCH và con trỏ với COUNT - vì vậy nó sẽ giống như SCAN 0 COUNT 50 MATCH doc: * http://redis.io/commands/scan –

+4

@lcostea: sử dụng 'KEYS' có thể hoặc có thể không nguy hiểm tùy thuộc vào một kịch bản cụ thể mà OP không mô tả. Cấp, 'SCAN' là hiệu suất an toàn hơn, nhưng vì nó chỉ là một con trỏ nó có thể không trả lại tất cả các mục hoặc trả về một số mục nhiều lần, vì vậy phải được sử dụng một cách cẩn thận là tốt. –

+1

@LiviuCostea Nói rằng nó nguy hiểm mà không đưa ra lý do không phải là rất hữu ích. –

Các vấn đề liên quan