Redis 批次指令(batch command) for .net and golang
如果要對 Redis 做批次指令的操作(例:一次要 delete 幾萬個 key),正常都會用批次的方式來進行操作,以減少 redis round trip time。
原本在 .net 裡面的程式寫法,個人常用的是:
var lsTask = new List<Task<bool>>();
var batch = redis.GetInstance(0).CreateBatch();
for(var item in lsItems)
{
var task = batch.KeyDeleteAsync("key");
lsTask.Add(task);
}
batch.Execute();
Task.WaitAll(lsTask.ToArray());
但最近在用 golang 實作時,並沒有查到像 .net 一樣的類別庫可以用。所以就間接的查到用 redis pipeline 來實作一樣的接作。
rdb := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: _redisServer,
})
pipe := rdb.Pipeline()
context := rdb.Context()
for _, v := range ids{
pipe.Del(context, v)
}
_, err := pipe.Exec(context)