2017-01-04 9 views
0

データベースMySQLと共にredisキャッシュが実装されているSpringアプリケーションがあります。ここでは、毎回データベースにアクセスするのではなく、サーバーの検証の一時的な値を格納するためにredisキャッシュを使用しています。したがって、取得するたびにデータベースの呼び出しが発生し、システムのパフォーマンスが低下します。春のブートアクションのエンドポイントを叩きながら春の起動時にRedisキャッシュ・コーン・リスナーを知る方法はredisキャッシュのアップですか?

今、私は突然私のRedisのキャッシュサーバが停止した場合、私たちは私のRedisのキャッシュサーバがダウンして通知を取得する方法を知っていただきたいと思います 、私の問題を説明します。したがって、redisキャッシュ・リスナー・コンテキストなどを使用して通知を取得するには、solution/example javaアプリケーションが必要です。

あなたの貴重な解決策は、私たちを多く助けます。前もって感謝します。

答えて

0

Redisはそのようには機能しません。実際、リモートサービスは、アプリケーションがダウンしたことをアプリケーションに通知しません。通常は逆の方法です。消費するサービスに多かれ少なかれ洗練されたクライアントでアクセスする場合は、クライアントの機能を利用することができます。

I/Oを実行する非同期クライアント、またはスレッドの監視がここで役立ちます。具体的には、Spring BootとRedisで使用しているクライアントによって異なります。 Jedisは、要求に応じて反応するプレーンクライアントです。 Lettuceあなたは、このような接続/切断などの特定の接続イベント、上と呼ばれるRedisConnectionStateListenerを登録することができます:

RedisClient redisClient = …; 

redisClient.addListener(new RedisConnectionStateListener() { 
    @Override 
    public void onRedisConnected(RedisChannelHandler<?, ?> redisChannelHandler) { 

    } 

    @Override 
    public void onRedisDisconnected(RedisChannelHandler<?, ?> redisChannelHandler) { 

    } 

    @Override 
    public void onRedisExceptionCaught(RedisChannelHandler<?, ?> redisChannelHandler, Throwable throwable) { 

    } 
}); 

春データのRedisを使用する場合、それはプライベートな場であるとして、LettuceConnectionFactoryからRedisClientを取得することは少しトリッキーかもしれません。したがって、反射が必要です。

関連する問題