Tôi mới đến redis nên tôi đang làm sai điều gì đó, tôi chắc chắn:StackExchange.Redis server.Keys (mẫu: "IsVerySlow *")
Tôi đã lưu trữ khoảng 16.000 khóa/giá trị trong Azure Redis.
tôi đã sử dụng sau đây để viết các phím/giá trị
foreach (var worksheet in wksList)
{
var wksYYMM = string.Format("{0}{1:00}", worksheet.ReviewDt.Year, worksheet.ReviewDt.Month);
var wksKey = string.Format("{0}:{1}:{2}", provCode, wksYYMM, worksheet.AcctNbr);
string jsonStr = JsonConvert.SerializeObject(MakeWsListDto(worksheet, provCoderList, rvrList));
cache.StringSet(wksKey, jsonStr);
}
để các phím của tôi trông như thế này: "AP: 201.401: AZ5798BK"
Khi tôi cố gắng một tra cứu như:
var keys = server.Keys(pattern: "AP:201401:*"); // returns in milliseconds
var keyAry = keys.ToArray(); // returns in over one minute
(note: this returns 12 keys)
phải mất 1 phút 12 giây để trả lại khóa. Khi tôi có các khóa, phải mất một phần nghìn giây để truy xuất các giá trị cho các khóa đó. Nếu tôi lặp lại giá trị của các khóa và trả về các giá trị tôi nhận được một kết quả tương tự. Tôi đã làm một ToArray() chỉ để cô lập vấn đề.
Nếu tôi thử cùng một truy vấn trong redis-cli.exe, nó sẽ trở lại tính bằng mili giây.
Tôi có sử dụng lệnh này không chính xác không?
Cảm ơn Marc Tôi sẽ cố gắng và cho bạn biết nó như thế nào. Điều đó có thể giải thích tại sao redis-cli.exe lại nhanh hơn rất nhiều. – Weej
Marc! Vâng đó là câu trả lời. Một câu hỏi tiếp theo: Tôi đã làm một thử nghiệm tối ưu hóa nhỏ và thấy rằng tôi tiếp tục nhận được hiệu suất tăng với kích thước trang đến năm 2000 mặc dù nó đã giảm xuống khoảng năm 1650. Vào thời điểm đó, nó đã giảm đi ở khoảng 180 mili giây. Hai câu hỏi: Tối ưu hóa trang có phải là một chức năng của kích thước db hoặc khóa không? Câu hỏi thứ hai: phân bổ bộ nhớ cho các trang có xảy ra trên máy khách hay máy chủ không? Cảm ơn rất nhiều vì câu trả lời của bạn! – Weej
Điều này đã giúp tôi giải quyết vấn đề hiệu suất tương tự với 'server.Keys'. Cảm ơn! – G0dsquad