news 2026/4/18 10:47:44

redis 使用Pipelined 管道命令批量操作 减少网络操作次数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
redis 使用Pipelined 管道命令批量操作 减少网络操作次数

用Pipelined 管道命令批量查询 / 更新 redis里1000个key, 每个key value设置独立的过期时间都是30分钟

// 批量获取Redis键值 List<String> appMetricKeys = metricDataList.stream().map(metricData -> metricData.getSourceMetricName() + StrPool.COLON + metricData.getSourceMetricId()).collect(Collectors.toList()); // 使用管道批量查询 List<Object> redisValues = redisTemplate.executePipelined((RedisCallback<Object>)connection -> { for (String key : appMetricKeys) { connection.get(redisTemplate.getKeySerializer().serialize(key)); } return null; }); // 处理需要发送的数据 List<MetricData> needSendData = new ArrayList<>(); for (int i = 0; i < metricDataList.size(); i++) { MetricData metricData = metricDataList.get(i); String redisValue = redisValues.get(i) != null ? redisValues.get(i).toString() : null; if (redisValue == null || !ObjectUtil.equals(metricData.getSourceMetricData(), redisValue)) { needSendData.add(metricData); } } // 批量更新Redis if (CollUtil.isNotEmpty(needSendData)) { redisTemplate.executePipelined((RedisCallback<Object>)connection -> { for (MetricData metricData : needSendData) { String key = TINGYUN_ACTION_REDIS_KEY + metricData.getSourceMetricName() + StrPool.COLON + metricData.getSourceMetricId(); Object value = metricData.getSourceMetricData(); connection.setEx(redisTemplate.getKeySerializer().serialize(key), 30 * 60, redisTemplate.getValueSerializer().serialize(value)); // 30分钟 } return null; }); // 批量发送Kafka needSendData.forEach(metricData -> { kafkaTemplate.send(Constant.METRIC_DATA_TOPIC, JSON.toJSONString(metricData)); }); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 18:51:48

如何在Linux上高效安装PyTorch GPU版本?详细步骤+避坑指南

如何在Linux上高效安装PyTorch GPU版本&#xff1f;详细步骤避坑指南 你有没有遇到过这样的情况&#xff1a;兴冲冲地准备开始训练一个深度学习模型&#xff0c;结果运行 torch.cuda.is_available() 却返回了 False&#xff1f;明明装了NVIDIA显卡、也下了PyTorch&#xff0c;为…

作者头像 李华
网站建设 2026/4/10 15:16:59

HTML meta标签优化Miniconda技术文章SEO

HTML meta标签优化Miniconda技术文章SEO 在人工智能与数据科学迅猛发展的今天&#xff0c;一个稳定、可复现的开发环境已成为科研和工程实践的基石。Python 作为主流编程语言&#xff0c;其生态中的 Miniconda 因轻量、灵活和强大的包管理能力&#xff0c;逐渐成为构建 AI 实验…

作者头像 李华
网站建设 2026/4/18 8:02:53

Pyenv设置全局Python版本:与Conda协同工作的正确姿势

Pyenv设置全局Python版本&#xff1a;与Conda协同工作的正确姿势 在现代AI和数据科学开发中&#xff0c;一个常见的痛点是&#xff1a;你刚在一个项目里配好了PyTorch 2.0所需的Python 3.10环境&#xff0c;结果另一个老项目却要求用TensorFlow 1.x&#xff0c;只能跑在Python …

作者头像 李华
网站建设 2026/4/18 7:36:15

Docker容器内外Miniconda环境一致性保障措施

Docker容器内外Miniconda环境一致性保障措施 在数据科学和机器学习项目中&#xff0c;一个常见的痛点是&#xff1a;“代码在我本地能跑&#xff0c;为什么换台机器就不行&#xff1f;”这个问题背后&#xff0c;往往是Python版本不一致、依赖包冲突或系统级库缺失导致的“环境…

作者头像 李华
网站建设 2026/4/18 10:08:35

Pyenv vs Conda 对比分析:为什么选择Miniconda-Python3.10做AI开发

Pyenv vs Conda 对比分析&#xff1a;为什么选择Miniconda-Python3.10做AI开发 在人工智能项目日益复杂的今天&#xff0c;一个常见的场景是&#xff1a;你在本地训练好的模型&#xff0c;在同事的机器上却因“包版本不匹配”而无法运行&#xff1b;或者刚装好的 PyTorch 报错提…

作者头像 李华