spring boot项目从零开始-(7)集成jedis访问redis集群
spring boot项目从零开始-集成jedis访问redis集群
- 简述
- 前提
- 步骤
- 文件
- pom.xml
- application.yml
- RedisConfig
- MainApp
- 验证
- 其它redis访问示例
简述
前提
已安装redis 6.2.5,安装参考:https://editor.csdn.net/md/?articleId=119191741
步骤
文件
pom.xml
<parent>
<artifactId>spring-boot-dependencies</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.3</version>
</dependency>
</dependencies>
application.yml
spring:
redis:
cluster:
# 连接池参数
min-idle: 8
max-idle: 16
max-active: 32
# 集群配置参数
max-redirects: 3
# password: xxxx
nodes: 192.168.11.180:6379,192.168.11.180:6380,192.168.11.180:6381,192.168.11.180:6389,192.168.11.180:6390,192.168.11.180:6391
RedisConfig
package org.example.redis;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
import java.time.Duration;
import java.util.List;
@Configuration
public class RedisConfig {
@Value("${spring.redis.cluster.min-idle}")
private int minIdle;
@Value("${spring.redis.cluster.max-idle}")
private int maxIdle;
@Value("${spring.redis.cluster.max-active}")
private int maxActive;
@Value("${spring.redis.cluster.max-redirects}")
private int maxRedirects;
@Value("${spring.redis.cluster.nodes}")
private List<String> nodes;
public JedisConnectionFactory jedisConnectionFactory() {
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(nodes);
clusterConfiguration.setMaxRedirects(maxRedirects);
// clusterConfiguration.setPassword("");
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMinIdle(minIdle);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMaxTotal(maxActive);
poolConfig.setTestOnBorrow(true);
JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder()
.connectTimeout(Duration.ofSeconds(10)).usePooling().poolConfig(poolConfig).build();
JedisConnectionFactory factory = new JedisConnectionFactory(clusterConfiguration, clientConfiguration);
factory.afterPropertiesSet();
return factory;
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
MainApp
package org.example;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Set;
@SpringBootApplication
@RestController
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class, args);
}
/**************************redis测试*****************************/
@Autowired
private RedisTemplate redisTemplate;
@GetMapping("/redis")
public String redis() {
redisTemplate.opsForSet().add("TEST:REDIS", "1", "2", "3");
Set<String> members = redisTemplate.opsForSet().members("TEST:REDIS");
System.out.println("query answer = " + members.toString());
return members.toString();
}
}
验证
http://localhost:8080/redis
其它redis访问示例
package com.ydfind.jedis;
import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;
import java.util.Set;
public class JedisTest {
// drd notes:redis单机的时候,可以下面这样
@Test
public void testConnect() {
Jedis jedis = new Jedis("192.168.11.180",6379);
String pong = jedis.ping();
System.out.println("连接成功:"+pong);
jedis.close();
}
@Test
public void testSetGet() {
// drd notes:集群下面会发生报错
Jedis jedis = new Jedis("192.168.11.180",6379);
jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
Set<String> keys = jedis.keys("*");
System.out.println(keys.size());
for (String key : keys) {
System.out.println(key);
}
System.out.println(jedis.exists("k1"));
System.out.println(jedis.ttl("k1"));
System.out.println(jedis.get("k1"));
}
@Test
public void testCluster() {
Set<HostAndPort>set =new HashSet<HostAndPort>();
set.add(new HostAndPort("192.168.11.180",6379));
JedisCluster jedisCluster=new JedisCluster(set);
jedisCluster.set("k1", "v1");
System.out.println(jedisCluster.get("k1"));
jedisCluster.set("k2", "v2");
System.out.println(jedisCluster.get("k2"));
jedisCluster.set("k3", "v3");
System.out.println(jedisCluster.get("k3"));
}
@Test
public void testCluster1() {
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.11.180",6379));
nodes.add(new HostAndPort("192.168.11.180",6380));
nodes.add(new HostAndPort("192.168.11.180",6381));
nodes.add(new HostAndPort("192.168.11.180",6389));
nodes.add(new HostAndPort("192.168.11.180",6390));
nodes.add(new HostAndPort("192.168.11.180",6391));
JedisCluster jedisCluster = new JedisCluster(nodes, 120);
jedisCluster.set("k1", "v1");
System.out.println(jedisCluster.get("k1"));
jedisCluster.set("k2", "v2");
System.out.println(jedisCluster.get("k2"));
jedisCluster.set("k3", "v3");
System.out.println(jedisCluster.get("k3"));
}
}
还没有评论,来说两句吧...