Redis中Pipeline的使用
通过Java访问Redis,我们一般使用Jedis,示例代码如下:
Jedis jedis = new Jedis("172.23.88.107", 6379); jedis.set("addr", "chonginq"); jedis.del("addr");
这段代码我们设置了addr的值,同时又删除了键addr。如果Redis和我们的Java程序在同一台服务器,那么可能不明显,如果我们的Java程序和Redis属于跨机房,那么这个命令就会通过网络发送两次。如果很多这种短小的命令通过网络传输势必就会造成网络延迟。于是就提出了pipeline的概念。
pipeline就是把一组命令进行打包,然后一次性通过网络发送到Redis。同时将执行的结果批量的返回回来。示例代码如下:
public void testPipeline(){ Jedis jedis = new Jedis("172.23.88.107", 6379); try { Pipeline pipelined = jedis.pipelined(); pipelined.set("addr", "chongqing"); pipelined.del("addr"); //pipelined.sync();//没有返回值 List<Object> list= pipelined.syncAndReturnAll(); for (Object object : list) { System.out.println(object); } } finally { redis.dispose(jedis); } }
1.pipelined.sync()表示我一次性的异步发送到redis,不关注执行结果。
2.pipelined.syncAndReturnAll()程序会阻塞,等到所有命令执行完之后返回一个List集合。
3.pipeline也不适合组装特别多的命令,因此如果是成千上万的这种命令,我们还是要进行命令的拆分。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗