如何在c#中使用redis pipiline(stackexchange.redis)?

yuvru6vn  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(498)

我目前已经在我的linux系统上测试了redis基准测试,结果给我留下了深刻的印象。但是在进行基准测试时,我使用了16个命令的流水线。现在我试着在c上执行它。我的主要问题是我想把成千上万的随机数据记录到redis中,我不知道如何使用流水线。
提前谢谢。

7dl7o3gd

7dl7o3gd1#

在stackexchange.redis中使用管道的最明确的方法是使用 CreateBatch 应用程序编程接口:

var db = conn.GetDatabase();
var batch = db.CreateBatch();
// not shown: queue some async operations**without**awaiting them (yet)
batch.Execute(); // this sends the queued commands
// now await the things you queued

但是,请注意,如果不这样做,您可以取得很多成就,因为:
来自不同线程(同步或异步)的并发负载被多路复用,允许有效地共享单个连接
即使没有批处理api,“发出多个异步操作,但不要等待它们”,同样的技巧仍然可以很好地工作(使用批处理api可以确保批处理作为一个连续块发送,而并发线程的工作不会在批处理中交错;这与 CreateTransaction() api)
还要注意,在一些批量场景中,您可能还需要考虑lua( ScriptEvaluate() ); 这个api是varadic的,因此可以适应任意参数长度—您的lua只需要检查 KEYS 以及 ARGV (在文章中讨论) EVAL 文件)。

相关问题