jediscluster(jediscluster) 痛定思痛。 2023-09-26 15:08 38阅读 0赞 ## 怎么连接redis集群 使用jedis连接单机和集群redis的两种方式 ## 第一:非集群状态下 非集群状态下用Jedis获取Redis连接,得到Jedis对象即可,一共有两种: 1.利用Jedis构造器,仅限用于测试,在实际项目中肯定是用JedisPool。 Jedis(String host); Jedis(String host , int port); 2.利用JedisPool 主要是利用Jedis jedis=jedisPool.getResource(); JedisPool有N多个构造器,常用的构造器参数有GenericObjectPoolConfig poolConfig,String host,int port,int timeout,String password,创建GenericObjectPoolConfig对象时我们一般用其子类JedisPoolConfig (redis.clients.jedis.JedisPoolConfig),timeout是连接redis服务器的超时时间,以毫秒为单位,一般设置为0,如果不设为0,则不可设置太小,如果设成1、2,那么可能因为网络原因在1毫秒、2毫秒之内没有连上服务器而报错。见下例: \[java\] view plain copy public static void main(String\[\] args) \{ JedisPoolConfig poolConfig = new JedisPoolConfig(); // 最大连接数 poolConfig.setMaxTotal(2); // 最大空闲数 poolConfig.setMaxIdle(2); // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常: // Could not get a resource from the pool poolConfig.setMaxWaitMillis(1000); JedisPool pool = new JedisPool(poolConfig, "192.168.83.128", 6379, 0, "123"); Jedis jedis = null; try \{ for (int i = 0; i < 5; i++) \{ jedis = pool.getResource(); jedis.set("foo" + i, "bar" + i); System.out.println("第" + (i + 1) + "个连接, 得到的值为" + jedis.get("foo" + i)); // 用完一定要释放连接 jedis.close(); \} \} finally \{ pool.close(); \} 如上,创建出一个JedisPool对象,然后调用其getResource()方法获取redis连接即可,之后就可以调用Jedis API操作redis了。jedis连接用完要释放即close,如果不close,则产生的连接会越来越多,当达到了最大连接数,再想获得连接,就会等待,当超过了最大等待时间后就会报异常。 第二:集群状态下 集群状态下用Jedis获取redis连接,是得到JedisCluster对象,之后对redis进行操作都是用此对象的方法进行的: \[java\] view plain copy public static void main(String\[\] args) \{ JedisPoolConfig poolConfig = new JedisPoolConfig(); // 最大连接数 poolConfig.setMaxTotal(1); // 最大空闲数 poolConfig.setMaxIdle(1); // 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常: // Could not get a resource from the pool poolConfig.setMaxWaitMillis(1000); Set nodes = new LinkedHashSet (); nodes.add(new HostAndPort("192.168.83.128", 6379)); nodes.add(new HostAndPort("192.168.83.128", 6380)); nodes.add(new HostAndPort("192.168.83.128", 6381)); nodes.add(new HostAndPort("192.168.83.128", 6382)); nodes.add(new HostAndPort("192.168.83.128", 6383)); nodes.add(new HostAndPort("192.168.83.128", 6384)); JedisCluster cluster = new JedisCluster(nodes, poolConfig); String name = cluster.get("name"); System.out.println(name); cluster.set("age", "18"); System.out.println(cluster.get("age")); try \{ cluster.close(); \} catch (IOException e) \{ e.printStackTrace(); \} 用集群时,好像没有办法设置集群的参数,比如最大连接数,虽然在创建JedisCluster 对象时传了JedisPoolConfig对象进去,但是JedisPoolConfig对象中的设置是不生效的。 ![jediscluster][] ## jediscluster怎么使用lua脚本 ## Jedis使用总结 前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。 本文做个总结,主要分享如下内容: 【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】 好了,一个一个来。 一、 Pipeline。aof缓存文件通过重写可以缩小的。 [jediscluster]: https://img1.baidu.com/it/u=627817234,1698806266&fm=15&fmt=auto
还没有评论,来说两句吧...