更新时间:2022-08-06 GMT+08:00
Redisson
介绍使用同一VPC内弹性云服务器ECS上的Redisson连接Redis实例的方法。更多的客户端的使用方法请参考Redis客户端。
- 如果创建Redis实例时设置了密码,使用Redisson客户端连接Redis时,需要配置密码进行连接,建议不要将明文密码硬编码在代码中。
- 连接单机、主备、Proxy集群实例需要使用Redisson的SingleServerConfig配置对象中的useSingleServer方法,Cluster集群实例需要使用ClusterServersConfig对象中的useClusterServers方法。
前提条件
- 已成功申请Redis实例,且状态为“运行中”。
- 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器用户指南》。
- 如果弹性云服务器为Linux系统,该弹性云服务器必须已经安装java编译环境。
操作步骤
- 查看并获取待连接Redis实例的IP地址/域名和端口。
具体步骤请参见查看实例信息。
- 登录弹性云服务器。
- 首先使用maven在pom.xml添加如下依赖。
<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.16.8</version> </dependency>
- 连接池推荐配置
连接保活推荐配置:
# ping连接间隔(配置PING探测会增加Redis负载,需要根据连接数调整,建议值至少配置为1000以上,连接数越多值配置越大,Redis活跃连接数超过5000时不建议配置) pingConnectionInterval: 3000
单机模式配置示例:(超时时间、连接池大小等需要根据业务实际情况进行调整,本章节仅作为示例值)
redisson: config: singleServerConfig: # 连接超时,单位:毫秒 connectTimeout: 10000 # 命令等待超时,单位:毫秒 timeout: 3000 # 命令失败重试次数 retryAttempts: 3 # 命令重试发送时间间隔,单位:毫秒 retryInterval: 1500 # 最小空闲连接数 connectionMinimumIdleSize: 30 # 连接池大小 connectionPoolSize: 50 # redis数据库编号 database: 0 # DNS监测时间间隔,单位:毫秒 dnsMonitoringInterval: 5000 # ping连接间隔 pingConnectionInterval: 3000
集群模式配置示例:(超时时间、连接池大小等需要根据业务实际情况进行调整)
redisson: config: clusterServersConfig: # 连接空闲超时,单位:毫秒 idleConnectionTimeout: 100000 # 连接超时,单位:毫秒 connectTimeout: 10000 # 命令等待超时,单位:毫秒 timeout: 3000 # 命令失败重试次数 retryAttempts: 3 # 命令重试发送时间间隔,单位:毫秒 retryInterval: 1500 # 失败从节点重连间隔时间 failedSlaveReconnectionInterval: 3000 # 失败从节点校验间隔时间 failedSlaveCheckInterval: 60000 # 单个连接最大订阅数量 subscriptionsPerConnection: 5 # 客户端名称 clientName: null # 发布和订阅连接的最小空闲连接数 subscriptionConnectionMinimumIdleSize: 1 # 发布和订阅连接池大小 subscriptionConnectionPoolSize: 50 # 从节点最小空闲连接数 slaveConnectionMinimumIdleSize: 24 # 从节点连接池大小 slaveConnectionPoolSize: 64 # 主节点最小空闲连接数 masterConnectionMinimumIdleSize: 24 # 主节点连接池大小 masterConnectionPoolSize: 64 # 对主节点变化节点状态扫描的时间间隔 - 单位是毫秒 scanInterval: 1000 # ping连接间隔 pingConnectionInterval: 3000 # 是否保持连接 keepAlive: false # 默认启用 tcpNoDelay 设置 tcpNoDelay: false
- 使用Redis Java (Redisson)客户端连接实例。
- Redisson单连方式连接Redis单机、主备、proxy集群示例。
Config config = new Config(); SingleServerConfig singleServerConfig = config.useSingleServer(); singleServerConfig.setAddress("redis://host:port"); // singleServerConfig.setPassword("********"); RedissonClient redisson = Redisson.create(config); // 测试concurrentMap,put方法的时候就会同步到redis中 ConcurrentMap<String, Object> map = redisson.getMap("FirstMap"); map.put("wanger", "男"); map.put("zhangsan", "nan"); map.put("lisi", "女"); ConcurrentMap resultMap = redisson.getMap("FirstMap"); System.out.println("resultMap==" + resultMap.keySet()); // 测试Set集合 Set mySet = redisson.getSet("MySet"); mySet.add("wanger"); mySet.add("lisi"); Set resultSet = redisson.getSet("MySet"); System.out.println("resultSet===" + resultSet.size()); // 测试Queue队列 Queue myQueue = redisson.getQueue("FirstQueue"); myQueue.add("wanger"); myQueue.add("lili"); myQueue.add("zhangsan"); myQueue.peek(); myQueue.poll(); Queue resultQueue = redisson.getQueue("FirstQueue"); System.out.println("resultQueue===" + resultQueue); // 关闭连接 redisson.shutdown();
- Redisson连接池方式连接Redis单机、主备、proxy集群示例。
// 1.初始化 Config config = new Config(); SingleServerConfig singleServerConfig = config.useSingleServer(); singleServerConfig.setAddress("redis://host:6379"); //设置对于master节点的连接池中连接数最大为500 singleServerConfig.setConnectionPoolSize(500); // 那么这些连接将会自动被关闭,并从连接池里去掉。时间单位是毫秒。 singleServerConfig.setIdleConnectionTimeout(10000); RedissonClient redisson = Redisson.create(config); // 测试concurrentMap,put方法的时候就会同步到redis中 ConcurrentMap<String, Object> map = redisson.getMap("FirstMap"); map.put("wanger", "男"); map.put("zhangsan", "nan"); map.put("lisi", "女"); ConcurrentMap resultMap = redisson.getMap("FirstMap"); System.out.println("resultMap==" + resultMap.keySet()); // 测试Set集合 Set mySet = redisson.getSet("MySet"); mySet.add("wanger"); mySet.add("lisi"); Set resultSet = redisson.getSet("MySet"); System.out.println("resultSet===" + resultSet.size()); // 测试Queue队列 Queue myQueue = redisson.getQueue("FirstQueue"); myQueue.add("wanger"); myQueue.add("lili"); myQueue.add("zhangsan"); myQueue.peek(); myQueue.poll(); Queue resultQueue = redisson.getQueue("FirstQueue"); System.out.println("resultQueue===" + resultQueue); // 关闭连接 redisson.shutdown();
- Redisson连接cluster集群示例。
Config config = new Config(); ClusterServersConfig clusterServersConfig = config.useClusterServers(); clusterServersConfig.addNodeAddress("redis://host:port"); // 设置密码 // clusterServersConfig.setPassword("********"); RedissonClient redisson = Redisson.create(config); ConcurrentMap<String, Object> map = redisson.getMap("FirstMap"); map.put("wanger", "男"); map.put("zhangsan", "nan"); map.put("lisi", "女"); ConcurrentMap resultMap = redisson.getMap("FirstMap"); System.out.println("resultMap==" + resultMap.keySet()); // 2.测试Set集合 Set mySet = redisson.getSet("MySet"); mySet.add("wanger"); mySet.add("lisi"); Set resultSet = redisson.getSet("MySet"); System.out.println("resultSet===" + resultSet.size()); //3.测试Queue队列 Queue myQueue = redisson.getQueue("FirstQueue"); myQueue.add("wanger"); myQueue.add("lili"); myQueue.add("zhangsan"); myQueue.peek(); myQueue.poll(); Queue resultQueue = redisson.getQueue("FirstQueue"); System.out.println("resultQueue===" + resultQueue); // 关闭连接 redisson.shutdown();
- Redisson单连方式连接Redis单机、主备、proxy集群示例。
父主题: Java客户端