Nếu bạn muốn có tốc độ, bạn nên chuẩn bị càng nhiều càng tốt khi lưu trữ cấu trúc hoặc 'bộ nhớ cache' trong redis. Nếu bạn lưu trữ sản phẩm trong HSET
và thêm các bộ đếm danh mục (mỗi bộ đếm một danh mục) cùng với thành viên 'dữ liệu sản phẩm' của bạn trong HSET
này , bạn có thể sử dụng HINCRBY
để tăng / giảm bộ đếm.
Nói chung (thiết kế bộ nhớ đệm Redis cho nhu cầu của bạn):bạn nên cố gắng ngăn truy xuất bất kỳ dữ liệu nào bạn không cần.
Tôi khuyên bạn nên sử dụng tập lệnh Lua để lưu trữ (/ cập nhật / xóa) cũng như truy xuất báo cáo tổng hợp của bạn. Các tập lệnh Lua được thực thi trên máy chủ Redis. ServiceStack hỗ trợ chúng (SCRIPT LOAD
+ EVALSHA
hoặc đơn giản là EVAL
), và bạn cũng có thể thử mô-đun ứng dụng khách BookSleeve C # (chúng tôi sử dụng và nhanh hơn một chút. 'nhanh hơn' :ứng dụng khách BookSleeve C # tập trung vào redis pipelining đa luồng, đây có thể là điều bạn muốn khi xử lý các tập dữ liệu lớn. Pipelining cũng có thể thực hiện được với ServiceStack.
Nếu danh mục và sản phẩm có ID số nguyên, bạn cũng có thể kết hợp ID này với ZSET
, nơi bạn có thể sử dụng ID làm trường điểm. Với ZRANGEBYSCORE
bạn có thể trực tiếp lấy 'bản ghi'. Kỹ thuật này an toàn miễn là ID của bạn sử dụng 15 chữ số trở xuống và không sử dụng phần thập phân của 'điểm số'. Vì vậy, ID phải nằm trong phạm vi -999999999999999 đến 999999999999999. Lưu ý:Các giới hạn này tồn tại vì máy chủ Redis thực sự lưu trữ điểm (float) dưới dạng đại diện chuỗi redis trong nội bộ.
Hy vọng điều này sẽ hữu ích, TW