Redis xstream 和 hashmap 跨网络性能差距以及如何提高 xstream 性能

时间:2021-07-02 03:08:27

标签: redis

我在不同的机器上(从/向另一台机器读/写)做了一些 xstream 和 hashmap 的基准测试。

我使用 Jedis(Java),我使用的 xstream 命令是

val response = jedis.xreadGroup("my-group", "consumer1",
          count=4, block=1, noAck=false, new SimpleEntry(streamName, StreamEntryID.UNRECEIVED_ENTRY))

和 hashmap 命令只是

jedis.keys("*")

我尝试了一些数据,当它很小(测试中为 1k 个字符字符串)时,它们的成本都是 <1ms。

但是当它更大时(测试中为 100k 个字符字符串),我得到以下结果

2021-07-02 09:37:45 INFO  RedisBaseline$:16 - put xstream len 100000 time elapsed [10.760028 ms]
2021-07-02 09:37:45 INFO  RedisBaseline$:16 - put hashmap len 100000 time elapsed [12.127884 ms]
2021-07-02 09:37:45 INFO  RedisBaseline$:16 - get hashmap len 100000 time elapsed [0.448862 ms]
2021-07-02 09:37:45 INFO  RedisBaseline$:16 - read xstream len 100000 time elapsed [67.994358 ms]

hashmap 读取和 xstream 读取之间存在很大差距。 (我也在同一台机器上做了这个测试,但所有结果都是 <1ms 后稳定)

那么有没有简单介绍一下他们内部是如何工作的?为什么 xstream 更慢?是因为hashmap索引吗?有什么改进吗?

0 个答案:

没有答案