Jedis を使用して、Spring Boot マイクロサービスで Redis Set コレクション (順序付けされていないコレクション) を操作する

記録: 410

シナリオ: Jedis を使用して、Spring Boot マイクロサービスで Redis Set コレクション (順序付けされていないコレクション) を操作します。

バージョン: JDK 1.8、Spring Boot 2.6.3、redis-6.2.5、jedis-3.7.1。

1.マイクロサービスでRedis 情報を構成する

1.1 application.yml 内の Jedis 構成情報

hub:
  example:
    redis:
      jedis:
        host: 192.168.19.203
        port: 28001
        password: 12345678
        timeout: 60000

1.2 ConfigurationProperties を使用して Jedis 構成をロードする

Spring Boot マイクロサービスが開始すると、自動アノテーション メカニズムが Jedis 関連の application.yml の JedisConnectProperties オブジェクトへの注入を読み取ります。

Spring環境では、JedisConnectPropertiesオブジェクトをインジェクトすることで、Redis関連の設定情報を取得できます。つまり、Jedis クライアントの必須パラメーターです。

JedisConnectProperties クラスを定義し、yml で hub.example.redis.jedis 構成をスキャンします。

@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 pom.xml に依存関係を追加する

jedis はデフォルトで Spring Boot に統合されており、使用時にバージョン番号を追加する必要はありません (この例では、バージョン 3.7.1 が Spring Boot 2.6.3 に対応するバージョンです)。

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>3.7.1</version>
</dependency>

2.マイクロサービスでJedis を構成する

2.1 ジェディスの設定

@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 分析

Jedisの設定が完了したら、 @Autowired を使用してSpring環境に自動的にjedisPoolを注入し、JedisリソースプールからJedisを取得してRedisを動作させることができます。

3. Jedis を使用して Redis Set コレクション (順序付けられていないコレクション) を操作する

3.1 簡単な説明

Jedis を使用して、Redis Set コレクション (順序付けされていないコレクション)、一般的な操作: 追加、チェック、削除、タイムアウトの設定などを操作します。

3.2 操作例

@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 テスト検証

Postman テストを使用します。

リクエスト RUL: http://127.0.0.1:18205/hub-205-redis/hub/example/loadJedis/jedis05-01

以上、ありがとう。

2023 年 4 月 15 日

おすすめ

転載: blog.csdn.net/zhangbeizhen18/article/details/130171880