Redis Primer(1)基於JedisPool的Redis hset併發效能測試
Redis Primer(1)基於JedisPool的Redis hset併發效能測試
- 作者:鍾超(Poechant)
- 郵箱:zhongchao.ustc#gmail.com
- 部落格:blog.csdn.net/poechant
- 微博:weibo.com/lauginhom
- 日期:2012年12月24日
- Redis Server 與 Redis Client 位於同一臺機器(從而排除頻寬限制帶來的影響);
- Redis Server 版本:2.6.7;
- Redis Client API:Jedis 2.1.0,使用 JedisPool(依賴包使用 commons-pool-1.5.3.jar);
1. 測試一:單執行緒客戶端基於不同Key和Value長度
1.1. 測試內容
- 不變數:
- JedisPool 引數確定
- minIdle = 0
- maxIdle = 50
- maxActive = 500
- 測試 hset 操作
- Field 長度為 32 bytes
- JedisPool 引數確定
- 控制變數:
- Key 長度;
- Value 長度;
- 測試內容:
- 吞吐量(每秒訪問次數)
1.2. 測試結果
Key 長度從 1 到 256 逐次 2 倍遞增, Value 長度從 8 到 32768 逐次 4 倍遞增。
- 以 Key 長度為 X 軸繪製測試結果:
- 以 Value 長度為 X 軸繪製測試結果:
1.3. 結論
Throughput 隨 Key 長度變化不大(更大範圍內的 Key 長度沒有測試,因為一般情況下 Key 超過 256 位元組的情況較少,請本人使用方式也符合該範圍),但與 Value 長度相關性極大(範圍較大,因本人的應用場景中 Value 值較大)。
1.4. 建議
- 減少每個查詢中的訪問次數(優化查詢,類似於 Database 中優化 SQL 語句);
- 要儘可能的減小 Value。
測試二:單執行緒客戶端基於不同連線池引數
2.1. 測試內容
- 不變數:
- 測試 hset 操作
- Key 長度為 32 bytes
- Field 長度為 32 bytes
- Value 長度為 256 bytes
- 控制變數
- maxIdle
- maxActive
- 測試內容
- 吞吐量(每秒訪問次數)
2.2. 測試結果
maxActive 從 25 到 300 每次遞增 25, maxIdle 從 50 到 450 每次遞增 100。
- 以 maxActive 長度為 X 軸繪製測試結果:
- 以 maxIdle 長度為 X 軸繪製測試結果:
2.3. 結論
在目前的測試引數範圍內,差別不大,或許需要進一步測試。從該測試結果看 maxIdle=25 且 maxActive=250 的 JedisPool 設定能夠帶來最大的 hset(32bits, 32bits, 256bits) 吞吐量。
2.4. 建議
- 採用 maxIdle=25 且 maxActive=250 的 JedisPool 設定。
測試三:多執行緒客戶端不同hset次數
3.1. 測試內容
- 不變數:
- 測試 hset 操作
- Key 長度為 32 bytes
- Field 長度為 32 btyes
- Value 長度為 20480 bytes
- 控制變數
- hset 操作次數從 10000 到 1000000
- 測試內容
- 吞吐量(每秒訪問次數)
2.3. 測試結果
hset 操作次數從 10000 到 5120 500
2.4. 結論與建議
- 用多執行緒的客戶端進行壓力測試;
- Redis 的併發效能相當不錯,20KB 的資料(這已經相當大了)每秒可以寫入 60000 多次,平均每秒 1200 MB,9600 Mb,約 9.6 Gb。
- 如果測試小資料,應該能達到 100,000/s 以上的併發量
-
轉載請註明來自(Poechant)的 CSDN 部落格:http://blog.csdn.net/poechant,作者微博:weibo.com/lauginhom
-
相關文章
- Redis的效能測試Redis
- Redis 效能測試Redis
- Redis-benchmark測試Redis效能Redis
- redis效能測試報告Redis測試報告
- 關於redis併發的程式Redis
- 基於 Redis 的 LBS 嘗試Redis
- 【Azure Redis 快取 Azure Cache For Redis】使用Redis自帶redis-benchmark.exe命令測試Azure Redis的效能Redis快取
- 基於redis實現的鎖(用於控制nodejs的併發)RedisNodeJS
- redis hset hmset過期時間Redis
- 《Redis官方教程》-基準測試Redis
- CYQ.Data 操作 Redis 效能測試:對比 StackExchange.RedisRedis
- 一次併發處理過程, 基於 RedisRedis
- Jmeter效能測試:高併發分散式效能測試JMeter分散式
- 線上Redis高併發效能調優實踐Redis
- Non-static method Redis::hSet () cannot be called staticallyRedis
- Redis(五):hash/hset/hget 命令原始碼解析Redis原始碼
- redis測試點Redis
- 每秒1w+分散式事務--dtm的Redis儲存效能測試分析分散式Redis
- Redis在.net中的使用(6)Redis併發鎖Redis
- 關於redis的幾件小事(五)redis保證高併發以及高可用Redis
- 【Redis】基於consul的Redis高可用方案Redis
- nosql redis資料庫壓力測試基準工具redis-benchmarkSQLRedis資料庫
- Redis測試報告Redis測試報告
- 基於async/non-blocking高效能redis元件庫BeetleX.RedisBloCRedis元件
- 基於jmeter的效能全流程測試JMeter
- boomer 基於 gRPC 壓測併發方案及效能測評OOMRPC
- Redis-高併發篇Redis
- Redis如何防止高併發?Redis
- 關於Redis的幾件小事 | 高併發和高可用Redis
- [Yii2] yii2-queue 基於redis 佇列測試學習Redis佇列
- 關於 Senparc.Weixin.Cache.Redis 引用的 StackExchange.Redis 版本不匹配的反饋測試Redis
- Redis哨兵模式配置測試Redis模式
- 一種redis命令搞定基於redis的分散式鎖Redis分散式
- 基於 Redis 的分散式鎖Redis分散式
- 基於redis的分散式鎖Redis分散式
- 實戰Redis序列化效能測試(Kryo和字串)Redis字串
- 關於SignalR併發量測試SignalR
- 壓力測試redis redis-benchmark 優化實踐Redis優化