Registros : 410
Escenario : use Jedis para operar colecciones de Redis Set (colecciones no ordenadas) en microservicios Spring Boot.
Versiones : JDK 1.8, Spring Boot 2.6.3, redis-6.2.5, jedis-3.7.1.
1. Configurar la información de Redis en microservicios
1.1 Información de configuración de Jedis en application.yml
hub:
example:
redis:
jedis:
host: 192.168.19.203
port: 28001
password: 12345678
timeout: 60000
1.2 Cargar la configuración de Jedis usando ConfigurationProperties
Cuando se inicia el microservicio Spring Boot, el mecanismo de anotación automática leerá la inyección de application.yml relacionada con Jedis en el objeto JedisConnectProperties.
En el entorno Spring, al inyectar el objeto JedisConnectProperties, se puede obtener información de configuración relacionada con Redis. Es decir, los parámetros requeridos del cliente Jedis.
Defina la clase JedisConnectProperties y escanee la configuración hub.example.redis.jedis en yml.
@Component
@ConfigurationProperties(prefix="hub.example.redis.jedis")
public class JedisConnectProperties {
private String host;
private int port;
private int timeout;
private String password;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1.3 Agregar dependencias en pom.xml
De forma predeterminada, jedis está integrado en Spring Boot y no es necesario agregar un número de versión al usarlo. En este ejemplo, la versión 3.7.1 es la versión correspondiente a Spring Boot 2.6.3.
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.1</version>
</dependency>
2. Configurar Jedis en microservicios
2.1 Configurar Jedi
@Configuration
public class JedisConfig {
@Autowired
private JedisConnectProperties jedisProperties;
@Bean("jedisPoolConfig")
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(30);
jedisPoolConfig.setMaxIdle(30);
jedisPoolConfig.setMinIdle(1);
jedisPoolConfig.setNumTestsPerEvictionRun(-1);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(false);
jedisPoolConfig.setBlockWhenExhausted(false);
return jedisPoolConfig;
}
@Bean("jedisPool")
public JedisPool jedisPool(JedisPoolConfig jedisPoolConfig) {
JedisPool jedisPool = new JedisPool(jedisPoolConfig,
jedisProperties.getHost(),
jedisProperties.getPort(),
jedisProperties.getTimeout(),
jedisProperties.getPassword());
return jedisPool;
}
}
2.2 Análisis
Después de configurar Jedis, puede usar @Autowired para inyectar automáticamente jedisPool en el entorno de Spring y obtener Jedis del grupo de recursos de Jedis para operar Redis.
3. Use Jedis para operar la colección Redis Set (colección desordenada)
3.1 Breve descripción
Use Jedis para operar la colección Redis Set (colección no ordenada), operaciones comunes: agregar, verificar, eliminar, establecer el tiempo de espera, etc.
3.2 Ejemplo de operación
@RestController
@RequestMapping("/hub/example/loadJedis")
@Slf4j
public class LoadJedisController {
// 注入JedisPool资源池
@Autowired
private JedisPool jedisPool;
/**
* 在Spring Boot微服务使用Jedis操作Redis Set集合(无序集合)
*/
@GetMapping("/jedis05-01")
public Object loadData05_01() {
log.info("Jedis操作开始...");
// 1.获取Jedis对象
Jedis jedis = jedisPool.getResource();
// 2.增
// 2.1写入一条数据
jedis.sadd("CityInfo:suzhou05:01", "苏州");
// 2.1写入批量数据
jedis.sadd("CityInfo:suzhou05:01"
, "苏州-姑苏", "苏州-相城",
"苏州-工业园区", "苏州-昆山");
jedis.sadd("CityInfo:hangzhou05:01"
, "杭州-西湖", "杭州-上城");
// 3.查
// 3.1查出指定key的值
Set<String> result01 = jedis.smembers("CityInfo:suzhou05:01");
// 3.2逐个取出
String result02 = jedis.spop("CityInfo:suzhou05:01");
// 3.3取出指定个数的值
Set<String> result03 = jedis.spop("CityInfo:suzhou05:01", 3);
// 3.3聚合两个队列
Set<String> result04 = jedis.sunion("CityInfo:suzhou05:01"
, "CityInfo:hangzhou05:01");
// 4.删
jedis.del("CityInfo:hangzhou05:01");
// 5.设置超时,单位秒
jedis.expire("CityInfo:suzhou05:01", 600L);
// 6.释放Jedis对象
jedis.close();
log.info("Jedis操作结束...");
return "执行成功";
}
}
3.3 Verificación de prueba
Utilice la prueba del cartero.
Solicitud RUL: http://127.0.0.1:18205/hub-205-redis/hub/example/loadJedis/jedis05-01
Arriba, gracias.
15 de abril de 2023