Redis——jedisCluster连接Redis集群简单使用
2023-09-11 14:16:28 时间
maven导入jedis包(当前最新Official Releases 3.7.0):
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
先搭建Redis集群:
直接拿之前的集群来用:Redis——cluster集群_FlyLikeButterfly的博客-CSDN博客
Redis的虚拟机ip:192.168.1.31;6个Redis集群端口8001-8006;
集群关系:
集群里的数据:
测试Demo:
/**
* 2021年11月5日上午9:50:22
*/
package testJedisCluster;
import java.time.Duration;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
/**
* @author XWF
*
*/
public class TestJedisCluster {
/**
* @param args
*/
public static void main(String[] args) {
Set<HostAndPort> jedisClusterNode = new HashSet<>();
jedisClusterNode.add(new HostAndPort("192.168.1.31", 8001));
// jedisClusterNode.add(new HostAndPort("192.168.1.31", 8002));
// jedisClusterNode.add(new HostAndPort("192.168.1.31", 8003));
// jedisClusterNode.add(new HostAndPort("192.168.1.31", 8004));
// jedisClusterNode.add(new HostAndPort("192.168.1.31", 8005));
// jedisClusterNode.add(new HostAndPort("192.168.1.31", 8006));
int connectionTimeout = 3000;
int soTimeout = 3000;
int maxAttempts = 5;
String password = "654321";
GenericObjectPoolConfig<Jedis> poolConfig = new GenericObjectPoolConfig<>();
poolConfig.setMaxIdle(100);
// poolConfig.setMaxWait(Duration.ofMillis(10000)); //4.0.0-SNAPSHOT版本
poolConfig.setMaxWaitMillis(10000);
poolConfig.setTestOnBorrow(true);
try (JedisCluster myCluster = new JedisCluster(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, poolConfig)) {
System.out.println(myCluster.getClusterNodes().keySet());
int i = 0;
while(i < 10) {
String key1 = String.valueOf((char)('a' + i));
System.out.println(key1 + " : " + myCluster.get(key1));
String key2 = String.valueOf((char)('A' + i)) + "{hashtagX}";
System.out.println(key2 + " -> " + myCluster.get(key2));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
}
System.out.println(myCluster.mget("A{hashtagX}", "B{hashtagX}", "xxx{hashtagX}xxx")); //批量查询key的slot需要一样
// System.out.println(myCluster.mget("a", "b")); //异常:No way to dispatch this command to Redis Cluster because keys have different slots.
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:
jedisCluster可以自动发现节点,只要在启动的时候配置的节点列表有正常可用的,就可以获取到集群;
只配置8001节点,启动时8001正常,运行过程中停掉8001依然可以使用集群功能;
批量操作需要注意slot一致;
Jedis的git网址:https://github.com/redis/jedis
相关文章
- 使用redis限制ip访问次数
- redis 主从模式,sentinel哨兵模式,cluster集群模式 简介
- Redis大key多key拆分方案
- 前后端项目部署-5, flask+Gunicorn+gevent+supervisor+nginx+redis+mysql+mongodb,docker-compose部署
- redis 简单整理——开发和运维中的问题[二十四]
- Redis集群介绍
- spring boot:使用redis cluster集群作为分布式session(redis 6.0.5/spring boot 2.3.1)
- spring boot下JedisCluster方式连接Redis集群的配置
- redis-3.2.5 make 报错
- Redis集群客户端扩展
- Redis集群原理篇之图文并茂
- 通过operator部署redis集群(ucloud版)
- redis-cli报错:(error) MOVED 12706 (未以集群模式连接)
- 架构设计:Vue+nginx+jwt+zuul+eureka+ribbon+hystrix+rabbitmq+mysql集群+redis集群+elsticsearch集群
- redis哨兵与集群
- Redis---NoSQL数据库介绍
- 深入理解Spring Redis的使用 (二)、RedisTemplate事务支持、序列化
- ASP.NET Core微服务(六)——【redis命令详细列表2】
- 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门
- websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用
- Redis集群搭建与简单使用
- 【问题解决】关于 C++ 连接 Redis 集群报错 MOVED
- web未授权访问漏洞总结——非常全而细致 redis、mongodb、jenkins、zk、es、memcache、hadoop、couchdb、docker
- redis_05 _ 内存快照:宕机后,Redis如何实现快速恢复
- redis_02 _ 数据结构:快速的Redis有哪些慢操作?
- redis集群主从中断,报io过高 不错
- Linux Redis集群搭建与集群客户端实现
- Redis 过期时间
- Redis Psubscribe 命令
- Redis is configured to save RDB snapshots redis的 rdb持久化错误
- 阿里云Redis之:配置程序接入阿里云Redis集群缓存数据(十七)