redis-cluster集群模式下使用pipeline,mget,mset批量操作

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前言:

     Redis在3.0版正式引入了集群这个特性,扩展变得非常简单。然而当你开心的升级到3.0后,却发现有些很好用的功能现在工作不了了, 比如我们今天要聊的pipeline功能等批量操作。

解决方式:

部署笔记:

./redis-server ../cluster/7111/redis-7111.conf 
./redis-server ../cluster/7112/redis-7112.conf 
./redis-server ../cluster/7113/redis-7113.conf 
./redis-server ../cluster/7114/redis-7114.conf 
./redis-server ../cluster/7115/redis-7115.conf 
./redis-server ../cluster/7116/redis-7116.conf 

使用redis-trib.rb来初始化集群,形如:
ruby  redis-trib.rb  create  --replicas  1  127.0.0.1:7111
	127.0.0.1:7112 127.0.0.1:7113 127.0.0.1:7114 127.0.0.1:7115
	127.0.0.1:7116

解决尝试开始:

使用spring-data-redis(推荐,简单) 

//pop a specified number of items from a queue
List<Object> results = stringRedisTemplate.executePipelined(
  new RedisCallback<Object>() {
    public Object doInRedis(RedisConnection connection) throws DataAccessException {
      StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
      for(int i=0; i< batchSize; i++) {
        stringRedisConn.rPop("myqueue");
      }
    return null;
  }
});

但是这种还是只支持单节点,那怎么办呢?

可以使用客户端分片集群,就自然没有上面的这个问题啦,另外也可以尝试使用阿里云redis

如果你一定要使用官方集群,又不用其他版本,那可以解决吗?答案是肯定的。

方式一(自己扩展实现):

参考博文:http://www.cnblogs.com/drwong/p/4825752.html

方式二:(githup现成的)

https://github.com/youaremoon/jedis-ext

关于mget,mset等操作(redis3.2.5高版本支持)

 Long msetnx = jedisCluster.msetnx(
                "{" + prefix + KEY_SPLIT + "}" + "name", "张三",
                "{" + prefix + KEY_SPLIT + "}" + "age", "23",
                "{" + prefix + KEY_SPLIT + "}" + "address", "adfsa",
                "{" + prefix + KEY_SPLIT + "}" + "score", "100");
        System.out.println(msetnx);

        System.out.println(jedisCluster.mget(
                "{" + prefix + KEY_SPLIT + "}" + "name",
                "{" + prefix + KEY_SPLIT + "}" + "age",
                "{" + prefix + KEY_SPLIT + "}" + "address",
                "{" + prefix + KEY_SPLIT + "}" + "score"));//[张三, 23, adfsa, 100]

        //name这个key已经存在,由于mset是原子的,该条指令将全部失败
        msetnx = jedisCluster.msetnx(
                "{" + prefix + KEY_SPLIT + "}" + "phone", "110",
                "{" + prefix + KEY_SPLIT + "}" + "name", "张三",
                "{" + prefix + KEY_SPLIT + "}" + "abc", "asdfasfdsa");
        System.out.println(msetnx);


        System.out.println(jedisCluster.mget(
                "{" + prefix + KEY_SPLIT + "}" + "name",
                "{" + prefix + KEY_SPLIT + "}" + "age",
                "{" + prefix + KEY_SPLIT + "}" + "address",
                "{" + prefix + KEY_SPLIT + "}" + "score",
                "{" + prefix + KEY_SPLIT + "}" + "phone",
                "{" + prefix + KEY_SPLIT + "}" + "abc"));//[张三, 23, adfsa, 100, null, null]
    }

参考博文:

redis集群客户端JedisCluster优化 - 管道(pipeline)模式支持

redis-cluster官方集群模式下使用pipeline批量操作

Redis学习笔记(五)jedis(JedisCluster)操作Redis集群 redis-cluster

转载于:https://my.oschina.net/u/1266221/blog/894308

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis-cluster集群模式下使用pipeline,mget,mset批量操作 的相关文章

随机推荐

  • 嵌入式软件工程师需要哪些知识

    最近想不到好的专题 xff0c 所以与大家一起聊聊 xff0c 在我眼中 xff0c 一名优秀的嵌入式软件工程师需要具备哪些能力 嵌入式软件工程师需要哪些知识 基本职业技能 编码能力 xff1a 至少精通C C 43 43 语言进行codi
  • Docker 更新镜像

    docker镜像如下 xff1a 今天在运行的容器内使用 apt get update 命令进行更新时 xff0c 发下很多404错误 1 Err http archive ubuntu com wily updates restricte
  • 普通用户crontab -e报错

    root crontab e 34 crontab u5u4Zm crontab 34 34L 1478C written crontab installing new crontab var spool cron mkstemp Perm
  • 读书笔记之《Windows内核原理与实现》

    最近学习 Windows内核原理与实现 发现其博大精深 xff0c 粗略过了一遍 xff0c 很多东西比较茫然 xff0c 看书之余把书中涉及的函数 xff0c 结构 xff0c 全局变量的所在页数总结出来 xff0c 便于以后查阅 由于半
  • 使用者——初见Pixhawk

    是什么 Pixhawk简单介绍 直接使用二次开发 Pixhawk总体概述怎么用 Pixhawk初次使用 搭建调试环境初始化配置测试试飞调整参数提高性能 xff08 是什么 Pixhawk简单介绍 PixHawk是著名飞控厂商3DR推出的新一
  • Kazam 1.3.99 发布,Python 3端口和BUG修复

    Kazam 是一款linux上的简洁并且功能强大的桌面录制工具 xff0c 喜欢录屏的童鞋可以尝试下安装改软件 您也可以选择录制声音的支持和pulseaudio的任何声音设备输入 xff0c 记录任何VP8 WebM视频格式的视频 添加 P
  • XCOM串口助手打印不出数据

    本次实验是在基于原子的战舰开发板上的做定时器捕获实验 xff0c 程序源码下载到板子上运行正常 指示灯正常显示 xff0c 打开XCOM识别不来串口 xff0c 原因 xff1a 硬件上没有插USB转串口线 xff1b 连接上USB转串口线
  • Android+GPS轨迹跟踪器(一)

    Android 43 GPS轨迹跟踪器 今天的第一步 xff1a 获取Key 使用高德地图 xff0c 查看高德官方API xff1a http lbs amap com 使用Android studio做开发平台 xff08 我还纠结了Q
  • sdformatter格式化选项设置_SD卡低级格式化方法演示,需要用到SDFormatter

    相信很多用户在使用手机的时候都会遇到过sd内存卡无法被识别的情况 而遇到这一情况是无法通过一般的方法来修复的 xff0c 所以 xff0c 一般都会使用sdformatter对其进行低级格式化 可是 xff0c 对于没有接触过sdforma
  • 自己用树莓派做了一个电视盒子,还可以看优酷和cctv

    我刚接触树莓派时间不久 xff0c 安装过raspberry xff08 树莓派官方系统 xff09 xff0c ubuntu mate xff0c openelec等系统 xff0c openelec是一个电视盒子系统 xff0c 但是我
  • 关闭和开启USB功能

    关闭和开启USB功能 一 xff0c 开启USB功能 USB Enable 64 echo off step1 if exist C Windows INF usbstor inf cls amp goto step2 else cls a
  • 地面站进行航迹规划任务设置

    地面站 xff1a Qgound Control MissionPlayUAV gt 3 2版本 飞控 xff1a Pixhawk 连接 xff1a 数传连接 TCP UDP网络连接 设定任务 APM Pixhawk地面站航迹规划指令单 C
  • 偏差(Bias)和方差(Variance)——机器学习中的模型选择

    模型性能的度量 在监督学习中 xff0c 已知样本 x 1 y 1 x 2 y 2 x n y n xff0c 要求拟合出一个模型 xff08 函数 xff09 hat f xff0c 其预测值 hat f x 与样本实际值 y 的误差最小
  • linux/debian/ubuntu/下can't open XXX.sh

    linux debian ubuntu下执行某 sh出现了 Can 39 t open xxx sh 执行 chmod 777 xxx sh 转载于 https www cnblogs com light zhang p 8417333 h
  • 1、智能盆栽初步了解

    第一个 xff1a 最好养的植物 Click and Grow智能盆栽 2014年03月14 http www pcpop com doc 0 991 991784 shtml 对于现在的人来说 xff0c 家里种个花啊 xff01 种个草
  • Linux下添加静态路由表设置网关出现SIOCADDRT: Network is unreachable的问题分析

    场景 xff1a route add default gw 192 168 4 1 route SIOCADDRT Network is unreachable 解释 xff1a 1 先ping一下网关 xff0c 但是ping的通不代表一
  • spring4笔记----报错publicid systemid之间要有空格的解决方法

    lt xml version 61 34 1 0 34 encoding 61 34 GBK 34 gt lt beans xmlns xsi 61 34 http www w3 org 2001 XMLSchema instance 34
  • 深入理解Redis的scan命令

    熟悉Redis的人都知道 xff0c 它是单线程的 因此在使用一些时间复杂度为O N 的命令时要非常谨慎 可能一不小心就会阻塞进程 xff0c 导致Redis出现卡顿 有时 xff0c 我们需要针对符合条件的一部分命令进行操作 xff0c
  • react中key的作用

    背景 xff1a 如果为父节点添加多个相同的子节点时 xff0c 不添加key属性 xff0c 会报错但同时也会渲染出dom xff0c 渲染出dom其实是证明能从差异对象中渲染出真实dom xff0c 但报错的原因是因为这种写法会影响渲染
  • redis-cluster集群模式下使用pipeline,mget,mset批量操作

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 前言 xff1a Redis在3 0版正式引入了集群这个特性 xff0c 扩展变得非常简单 然而当你开心的升级到3 0后 xff0c 却发现有些很好用的功能现在工作不了了