Cloud Tasksを使っていて、実行されたタスクにエラーが発生した場合は再実行キューにはいる設定にしている
ただ、前回の実行した時のエラーが起こるまでの処理が再実行時には最初から始まってしまっていて、処理が重複してしまっているものがあった
そこで、処理したらRedisに一時的に処理した事実をキャッシュさせておく対策をとることにした
Redis環境
docker-composeでつくる
Springの準備
pom.xmlに以下を追加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
application.yamlには以下を追加する
spring.redis: host: localhost port: 6379 password: null database: 0
これで利用ができる
利用してみる
cacheにキーがあるかどうか
Boolean hasCache = redisTemplate.hasKey(keyName);
単純な文字列をキャッシュさせる
redisTemplate.opsForValue()
.set(keyName, value, 30, TimeUnit.DAYS); // 有効期限30日に設定
opsForValueはRedisのString型を扱うオペレーション
他参考
https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis:template