記録: 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 日