Chìa khóa bạn đang nói về việc sử dụng không thực sự lâu như vậy.
Khóa ví dụ bạn đưa ra là cho một tập hợp, các phương pháp tra cứu tập hợp là O (1). Các phép toán phức tạp hơn trên một tập hợp (SDIFF, SUNION, SINTER) là O (N). Rất có thể là đang điền $userId
là một hoạt động tốn kém hơn so với sử dụng một khóa dài hơn.
Redis đi kèm với một tiện ích điểm chuẩn được gọi là redis-benchmark
, nếu bạn sửa đổi kiểm tra "GET" trong src / redis-benchmark.c để khóa của chúng chỉ là "foo", bạn có thể chạy kiểm tra khóa ngắn sau khi make install
:
diff --git a/src/redis-benchmark.c b/src/redis-benchmark.c
--- a/src/redis-benchmark.c
+++ b/src/redis-benchmark.c
@@ -475,11 +475,11 @@
benchmark("MSET (10 keys)",cmd,len);
free(cmd);
- len = redisFormatCommand(&cmd,"SET foo:rand:000000000000 %s",data);
+ len = redisFormatCommand(&cmd,"SET foo %s",data);
benchmark("SET",cmd,len);
free(cmd);
- len = redisFormatCommand(&cmd,"GET foo:rand:000000000000");
+ len = redisFormatCommand(&cmd,"GET foo");
benchmark("GET",cmd,len);
free(cmd);
Đây là tốc độ kiểm tra GET cho 3 lần chạy tiếp theo của phím ngắn "foo":
59880.24 requests per second
58139.53 requests per second
58479.53 requests per second
Đây là tốc độ kiểm tra GET sau khi sửa đổi lại nguồn và thay đổi khóa thành "set-allBooksBelongToUser:1234567890":
60240.96 requests per second
60606.06 requests per second
58479.53 requests per second
Thay đổi khóa một lần nữa thành "i Thạch cao Văn học
58479.53 requests per second
58139.53 requests per second
56179.77 requests per second
Vì vậy, ngay cả những phím thực sự dài cũng không có tác động lớn đến tốc độ của redis. Và đây là trên GET, một hoạt động O (1). Các hoạt động phức tạp hơn thậm chí sẽ ít nhạy cảm hơn với điều này.
Tôi nghĩ rằng việc có các khóa xác định rõ ràng những giá trị mà chúng nắm giữ vượt trội hơn rất nhiều so với bất kỳ hiệu suất tốc độ cực nhỏ nào mà bạn sẽ nhận được từ các khóa viết tắt.
Nếu bạn muốn thực hiện điều này xa hơn, thì cũng có -r [keyspacelen]
trên tiện ích redis-benchmark cho phép nó tạo các khóa ngẫu nhiên (miễn là chúng có ':rand:' trong đó), bạn chỉ có thể tăng kích thước của tiền tố trong mã thử nghiệm lên bất kỳ độ dài nào bạn muốn.