產品概述
Tair持久記憶體型,基於持久記憶體技術,為您提供大容量、相容Redis的記憶體資料庫產品。單一實例成本對比KVStore for Redis社區版最高可降低30%,且資料持久化不依賴傳統磁碟,保證每個操作持久化的同時提供近乎Redis社區版的吞吐和延時,極大提升業務資料可靠性。更多資訊請參見持久記憶體型。
測試載入器
採用開源社區的YCSB壓測工具進行壓測。YCSB是一款Java編寫的支援多種資料庫的效能測試工具,具體安裝和使用方法請參見YCSB。
由於開源版本僅支援測試Hash結構的資料,下載YCSB工具後,需要將YCSB/redis/src/main/java/site/ycsb/db/RedisClient.java檔案替換為RedisClient.java檔案,用於測試String結構的資料。
工作負載
測試的總資料量8 GB,資料分布方法為zipfian,具體測試情境如下:
- Load:100%的寫操作。
- Workload C:100%的讀操作。
- Workload A:50%的更新操作與50%的讀操作。
關於Workload的詳細介紹,請參見Core Workloads。
說明 由於應用情境不同,Set、Zset中的複雜命令無法進行通用測試,您可以根據您的業務情境自行測試。
測試命令
#載入資料
workload=a
./bin/ycsb load redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
#運行Workload C
workload=c
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
#運行Workload A
workload=a
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
表 1. 參數說明參數 | 說明 |
server_ip | Tair執行個體的IP地址。 |
port | Tair執行個體的服務連接埠。 |
password | 根據選取帳號的不同,密碼的填寫格式有一定區別: |
recordcount | 資料裝載階段準備的資料量。 |
operationcount | 執行操作的資料量。 |
command_group | 測試的資料結構,本案例中,依次測試下述資料結構: |
fieldcount | 欄位或元素個數,本案例中,String資料結構配置為1,其他資料結構配置為10。 |
fieldlength | 值長度,根據測試需求配置。 |
threads | YCSB線程數,根據執行個體規格配置。 |
測試結果
測試單位 | 說明 |
QPS | 每秒處理的讀寫運算元,單位為次/秒。 |
INSERT Average Latency | 寫操作平均延遲,單位為微秒(us)。 |
INSERT 99th Percentile Latency | 處理速度最快的99%寫操作中,最長的延遲時間,單位為微秒。例如該指標的值為500微秒,表示99%的請求可以在500微秒內被處理。 |
READ AverageLatency | 讀操作平均延遲,單位為微秒。 |
READ 99thPercentileLatency | 處理速度最快的99%讀操作中,最長的延遲時間,單位為微秒。 |
UPDATE AverageLatency | 更新操作平均延遲,單位為微秒。 |
UPDATE 99thPercentileLatency | 處理速度最快的99%更新操作中,最長延遲時間,單位為微秒。 |
Load情境測試結果
表 2. String資料結構Value長度(位元組) | QPS(次/秒) | INSERT Average Latency(微秒) | INSERT 99th Percentile Latency(微秒) |
128位元組 | 134,478 | 473 | 687 |
256位元組 | 126,139 | 504 | 828 |
1024位元組 | 99,775 | 638 | 1,051 |
2048位元組 | 77,130 | 826 | 1,157 |
4096位元組 | 60,646 | 1,050 | 1,534 |
表 3. Hash資料結構Key中的Field數量 | Value長度(位元組) | QPS(次/秒) | INSERT Average Latency(微秒) | INSERT 99th Percentile Latency(微秒) |
10 | 128 | 47,353 | 1,348 | 1,885 |
256 | 46,716 | 1,366 | 2,181 |
1,024 | 27,759 | 2,297 | 2,873 |
2,048 | 16,605 | 3,833 | 4,923 |
表 4. List資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | INSERT Average Latency(微秒) | INSERT 99th Percentile Latency(微秒) |
10 | 128 | 64,950 | 979 | 1,310 |
256 | 47,157 | 1,348 | 1,752 |
1,024 | 26,719 | 2,386 | 3,457 |
2,048 | 16,714 | 3,811 | 4,751 |
4,096 | 10,129 | 6,279 | 7,891 |
表 5. Set資料結構Key中的Member數量 | Value長度(位元組) | QPS(次/秒) | INSERT Average Latency(微秒) | INSERT 99th Percentile Latency(微秒) |
10 | 128 | 63,670 | 1,001 | 1,514 |
256 | 44,707 | 1,427 | 2,129 |
1,024 | 25,375 | 2,513 | 3,239 |
2,048 | 14,318 | 4,451 | 5,619 |
4,096 | 8,378 | 7,608 | 9,095 |
表 6. Sorted Set資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | INSERT Average Latency(微秒) | INSERT 99th Percentile Latency(微秒) |
10 | 128 | 40,292 | 1,585 | 2,469 |
256 | 34,168 | 1,869 | 2,569 |
1,024 | 21,347 | 2,989 | 3,905 |
2,048 | 12,868 | 4,956 | 6,255 |
4,096 | 7,864 | 8,101 | 9,599 |
Workload C情境測試結果
表 7. String資料結構Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) |
128位元組 | 170,699 | 362 | 546 |
256位元組 | 163,829 | 380 | 565 |
1024位元組 | 161,491 | 386 | 569 |
2048位元組 | 130,189 | 487 | 729 |
4096位元組 | 115,433 | 548 | 808 |
表 8. Hash資料結構Key中的Field數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) |
10 | 128 | 96,111 | 662 | 874 |
256 | 86,892 | 733 | 915 |
1,024 | 61,608 | 1,030 | 1,293 |
2,048 | 37,334 | 1,696 | 2,331 |
4,096 | 25,943 | 2,429 | 3,319 |
表 9. List資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) |
10 | 128 | 105,296 | 604 | 889 |
256 | 97,047 | 655 | 890 |
1,024 | 66,384 | 955 | 1,192 |
2,048 | 35,796 | 1,769 | 2,461 |
4,096 | 26,314 | 2,392 | 3,271 |
表 10. Set資料結構Key中的Member數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) |
10 | 128 | 97,825 | 651 | 896 |
256 | 80,954 | 787 | 970 |
1024 | 59,924 | 1060 | 1313 |
2048 | 33,356 | 1900 | 2637 |
4096 | 23,605 | 2677 | 3723 |
表 11. Sorted Set資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) |
10 | 128 | 58,380 | 1,093 | 1,341 |
256 | 56,287 | 1,133 | 1,390 |
1,024 | 47,468 | 1,338 | 1,688 |
2,048 | 30,073 | 2,096 | 2,783 |
4,096 | 21,850 | 2,880 | 3,765 |
Workload A情境測試結果
表 12. String資料結構Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) | UPDATE AverageLatency(微秒) | UPDATE 99thPercentileLatency(微秒) |
128 | 141,120 | 451 | 616 | 450 | 618 |
256 | 137,551 | 463 | 617 | 461 | 618 |
1,024 | 124,165 | 516 | 724 | 508 | 725 |
2,048 | 92,652 | 695 | 881 | 678 | 871 |
4,096 | 78,994 | 819 | 1,042 | 791 | 1,024 |
表 13. Hash資料結構Key中的Field數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) | UPDATE AverageLatency(微秒) | UPDATE 99thPercentileLatency(微秒) |
10 | 128 | 99,495 | 646 | 831 | 633 | 820 |
256 | 88,235 | 731 | 985 | 712 | 966 |
1,024 | 72,013 | 892 | 1,159 | 863 | 2,049 |
2,048 | 45,790 | 1,379 | 1,898 | 1,354 | 2,821 |
4,096 | 32,912 | 1,891 | 2,931 | 1,915 | 7,887 |
表 14. List資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) | UPDATE AverageLatency(微秒) | UPDATE 99thPercentileLatency(微秒) |
10 | 128 | 71,696 | 591 | 775 | 1,185 | 1,383 |
256 | 66,294 | 638 | 800 | 1,281 | 1,456 |
1,024 | 53,402 | 791 | 1,006 | 1,581 | 1,865 |
2,048 | 36,519 | 1,221 | 1,581 | 2,232 | 2,831 |
4,096 | 28,390 | 1,618 | 2,113 | 2,803 | 3,777 |
表 15. Set資料結構Key中的Member數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) | UPDATE AverageLatency(微秒) | UPDATE 99thPercentileLatency(微秒) |
10 | 128 | 66,346 | 640 | 792 | 1,282 | 1,445 |
256 | 60,010 | 707 | 993 | 1,415 | 1,957 |
1,024 | 45,359 | 933 | 1,128 | 1,858 | 2,073 |
2,048 | 29,027 | 1,529 | 2,021 | 2,820 | 4,507 |
4,096 | 21,440 | 2,144 | 2,773 | 3,726 | 5,095 |
表 16. Sorted Set資料結構Key中的Element數量 | Value長度(位元組) | QPS(次/秒) | READ AverageLatency(微秒) | READ 99thPercentileLatency(微秒) | UPDATE AverageLatency(微秒) | UPDATE 99thPercentileLatency(微秒) |
10 | 128 | 49,695 | 861 | 1,050 | 1,707 | 1,912 |
256 | 48,036 | 891 | 1,084 | 1,763 | 1,970 |
1,024 | 39,795 | 1,081 | 1,386 | 2,107 | 2,563 |
2,048 | 28,415 | 1,597 | 1,981 | 2,855 | 3,589 |
4,096 | 21,317 | 2,247 | 2,821 | 3,665 | 4,787 |