集群方式连接redis 命令行_Redis(一) Jedis单机和集群连接

前言

使用Jedis对Redis进行单节点和集群的连接实操案例。

导入依赖

jedis用到的依赖(new Jedis(ip,port),用于jedis示例)

redis.clients  jedis  2.9.0

拓展学习(获取配置文件参数)

因为是Jedis所以直接在代码中配置或者说是可以从文件中读取配置参数信息来进行配置。那么如果要读取cfg文件的参数配置的话,需要引入ini4j的依赖,如下:

读取cfg文件参数

org.ini4jini4j0.5.4

单节点信息操作

private void singleRedis() {    Jedis jedis = new Jedis(host, port);    jedis.auth(password);    // 如果redis是集群模式会报错:JedisMovedDataException , 需要采用jedisCluster来进行连接    jedis.set("first", "Hello single Jedis, finish study-work of Redis in one day");    System.err.println(jedis.get("first"));  }

集群节点操作

Jedis连接Redis集群需要采用JedisCluster才行,如果单独依照上面单节点进行密码验证的话会报错:

Exception  in  thread  "main"  redis.clients.jedis.exceptions.JedisDataException: NOAUTH  Authentication  required.

那么我们构建JedisCluster对象的时候查看源码会发现有两个带密码的构造方法:

JedisCluster(HostAndPort node, int connectionTimeout, int soTimeout,int maxAttempts, String password, final GenericObjectPoolConfig poolConfig)

JedisCluster(Set jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, final GenericObjectPoolConfig poolConfig)

其实两个没什么差距,只是集群单节点和多节点的差别。

GenericObjectPoolConfig构造

private GenericObjectPoolConfig getGenericObjectPoolConfig() {    GenericObjectPoolConfig genericObjectPool = new GenericObjectPoolConfig();    genericObjectPool.setMaxIdle(10);genericObjectPool.setMaxTotal(100);    genericObjectPool.setMinEvictableIdleTimeMillis(30000);     // 逐出连接的最小空闲时间 30s    genericObjectPool.setSoftMinEvictableIdleTimeMillis(60000);    // 空闲逐出时间1分钟    return genericObjectPool;}

集群实例

private void clusterRedis() {  HostAndPort hostAndPort = new HostAndPort(host, port);  Set hostAndPortSet = new HashSet<>();  hostAndPortSet.add(hostAndPort);  //10是maxAttempts , 第一个参数可以为hostAndPort或者Set  JedisCluster jedisCluster = new JedisCluster(hostAndPort, REDIS_COMMAND_TIMEOUT, REDIS_COMMAND_TIMEOUT, 10, password, this.getGenericObjectPoolConfig());  jedisCluster.set("second", "Hello cluster Jedis, finish study-work of Redis in one day");  System.err.println(jedisCluster.get("second"));}private GenericObjectPoolConfig getGenericObjectPoolConfig() {  GenericObjectPoolConfig genericObjectPool = new GenericObjectPoolConfig();  genericObjectPool.setMaxIdle(10);genericObjectPool.setMaxTotal(100);  genericObjectPool.setMinEvictableIdleTimeMillis(30000);  // 逐出连接的最小空闲时间 30s  genericObjectPool.setSoftMinEvictableIdleTimeMillis(60000);  // 空闲逐出时间1分钟  return genericObjectPool;}public static void main(String[] args) {  JedisDemo jedisDemo = new JedisDemo();  //jedisDemo.singleRedis();  jedisDemo.clusterRedis();}

实现图

04125962238a992c717b8ed0ac8fcb4c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值