【问题标题】:How to generate a large amount of redis data of a specific size to a redis cluster如何生成大量指定大小的redis数据到redis集群
【发布时间】:2022-11-29 16:39:12
【问题描述】:
我需要将值大小为1kb的millions of redis data生成到redis集群,假设只有值类型是字符串。我了解到两个选项,第一个是使用debug populate生成特定数量的数据,但它没有设置value size。
127.0.0.1:6379> DEBUG POPULATE 1000000
OK
第二种是用shell调用redis-cli不知道怎么生成1kb数据
for i in `seq 1000000`;
do
redis-cli SET key$i val$i ;
done
我是这方面的新手。我如何满足需求?我真的很感激任何帮助。
【问题讨论】:
标签:
shell
redis
redis-cluster
redis-cli
【解决方案1】:
可能有更好的方法,但是(在我早上喝咖啡之前)这里有一个方法......
首先,在脚本开头附近生成 40kB 的随机文本:
stuff=$(head -c 40000 /dev/urandom | base64)
现在,在您的循环中,转到文本中的随机偏移量 0..32767 并获取以下 1024 字节:
val=${stuff:RANDOM:1024}
如果您想知道,我正在努力避免在您的大循环内创建昂贵的流程。
请注意,如果您从偏移量 0..32768 开始随机抽取一百万个样本,则不可避免地会出现重复。您可以通过从不同的偏移量中获取多个较小的块并将它们附加在一起来减少这种情况。
除此之外,我认为你最好对其中的一些进行流水线处理,或者使用 Python 或一些批量加载来加速它。