一、介绍

项目中碰到需要一次插入、删除多个key的情况,数据结构用的是hash存储,可以使用redis的pipeline功能实现。

注:Redis的pipeline功能的原理是 Client通过一次性将多条redis命令发往Redis Server,减少了每条命令分别传输的IO开销。同时减少了系统调用的次数,因此提升了整体的吞吐能力。

二、使用pipeline添加

	pipeline := redisdb.Pipeline()
	pipeline.HMSet(ctx, "key1", "friendType", 1)
	pipeline.HMSet(ctx, "key2", "friendType", 1)
	cmders, err := pipeline.Exec(ctx)
	if err != nil {
		lg.Errorf("pipeline exec failed. err[%v]", err)
		return err
	}
	for _, cmder := range cmders {
		cmd := cmder.(*redis.BoolCmd)
		_, err := cmd.Result()
		if err != nil {
			lg.Errorf("err[%v]", err)
		}
	}

三、使用pipeline删除

pipeline := redisdb.Pipeline()
	pipeline.Del(ctx, "key1")
	pipeline.Del(ctx, "key2")
	cmders, err := pipeline.Exec(ctx)
	if err != nil {
		lg.Errorf("pipeline exec failed. err[%v]", err)
		return err
	}
	for _, cmder := range cmders {
		cmd := cmder.(*redis.IntCmd)
		_, err := cmd.Result()
		if err != nil {
			lg.Errorf("err[%v]", err)
		}
	}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐