Spring Boot を使用して Redis キーの有効期限コールバック関数を実装する
Redis をキャッシュまたはデータ ストアとして使用する場合、キーの有効期限が切れたときに、関連データのクリアや通知の送信など、特定の操作を実行する必要がある場合があります。Spring Bootでは、RedisMessageListener
インターフェースを実装することでRedisキー有効期限コールバック関数を実現できます。Redis キーの有効期限コールバックを実装する Spring Boot アプリケーションの例を次に示します。
ステップ 1: 依存関係を導入する
まず、依存関係をファイルにpom.xml
インポートします。spring-boot-starter-data-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
ステップ 2: Redis 接続を構成する
application.properties
Redis ホスト、ポート番号、パスワードなどの Redis 接続情報をまたはファイルで構成しますapplication.yml
。
spring:
redis:
host: localhost
port: 6379
password:
database: 0
ステップ 3: Redis 有効期限イベント リスナーを作成する
RedisMessageListener
インターフェイスを実装し、onMessage
キーの有効期限が切れたときに呼び出されるメソッドを実装するクラスを作成します。
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;
@Component
public class RedisKeyExpirationListener implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
String expiredKey = message.toString();
// 在这里添加你的业务逻辑,比如清除相关数据或发送通知
System.out.println("键过期:" + expiredKey);
}
}
ステップ 4: Redis リスナー コンテナーを構成する
構成クラスを作成し、Redis リスナー コンテナーを構成しRedisMessageListenerContainer
、前の手順で作成したリスナーをコンテナーに登録します。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@Configuration
public class RedisConfig {
private final RedisConnectionFactory redisConnectionFactory;
@Autowired
public RedisConfig(RedisConnectionFactory redisConnectionFactory) {
this.redisConnectionFactory = redisConnectionFactory;
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener(redisKeyExpirationListener(), new PatternTopic("__keyevent@*__:expired"));
return container;
}
@Bean
public RedisKeyExpirationListener redisKeyExpirationListener() {
return new RedisKeyExpirationListener();
}
}
上記構成では、PatternTopic
リッスンするRedisキー有効期限イベントチャネルを指定することでコンテナに登録されます__keyevent@*__:expired
。RedisKeyExpirationListener
Redis でキーの有効期限が切れると、RedisKeyExpirationListener
メソッドonMessage
が呼び出され、このメソッドにビジネス ロジックを追加できます。
これは、Redis キーの有効期限コールバック機能を実装した Spring Boot アプリケーションの例です。実際のニーズに応じて、コードに適切な変更や拡張を加えることができます。