Use Jedis para operar la colección Redis Set (colección no ordenada) en microservicios Spring Boot

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

Supongo que te gusta

Origin blog.csdn.net/zhangbeizhen18/article/details/130171880
Recomendado
Clasificación