問題タブ [spring-data-redis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-data-redis - Spring-data-redis cache - CustomizeRedisCacheManager を使用すると、データがキャッシュされていてもバックエンド メソッドを呼び出す
Spring-data-redis キャッシュ (1.6.1)、Jredis Client 2.7.3 を使用しています。フェイルオーバーを有効にしたい。redis サーバーがダウンしても、アプリケーションが動作し続けてほしい
1) spring-data xml 構成を使用した場合、redis キャッシュは正常に動作します。バックエンドを呼び出し、データをキャッシュし、2 回目の呼び出しでバックエンドを呼び出しません。ただし、xml 構成を使用してサーバーがダウンしている場合に Redis Exception をキャプチャし、アプリケーションが動作し続けるように null を返す方法がわかりません。十分なドキュメントがありません。(このソリューションは機能しません)
2) Java を使用して redis キャッシュを構成しました。この場合、フェイルオーバーの例外をキャッチできますが、Spring-data-redis は、redis キャッシュが機能している場合でも、バックエンド データベース メソッドを呼び出し続けます。そのため、バックエンド メソッドを呼び出してデータをキャッシュする必要があります。2 番目の呼び出しは、バックエンド データベースに戻るべきではありません。
したがって、すべてのリクエストでバックエンドデータベースメソッドをキャッシュして呼び出しています。
誰かがこの問題に直面したかどうか疑問に思っていました。または、バックエンド Redis サーバーがダウンしている場合に spring-data-redis をフェイルオーバーする方法についてのアイデア。
サンプルコードを添付しました。
ここに AppConfig.java があります
ここに HelloWorldServica.java があります
WelcomeController.java
spring-boot - spring-data-redis で使用する論理データベースを指定する
と Spring Boot を使用spring-data-redis
しspring-session
て Redis インスタンスに接続しています。spring-data-redis
ただし、DB 0 (デフォルト) ではなく、別のローカル データベース (DB 1 など) に接続したいと考えています。これは、セッションを保存したい場所です。これは spring-data-redis で可能ですか?
json - 複数の型を持つネストされたオブジェクトに使用する RedisTemplate ハッシュ値シリアライザー
Redis を使用してエンティティのキャッシュ データを保存しようとしています。エンティティにはさまざまな種類のフィールドがあります。たとえば、
より多くのフィールドがあり、いくつかのフィールドは他のフィールドよりも頻繁に更新されるため、これjob
を各フィールドをキーとして Redis の Hashmap として保存することにしました。ここでは、入れ子になったオブジェクト likejobDef
は重要ではないので、for を使用Jackson2JsonRedisSerializer
するhashValueSerializer
とRedisTemplate
、jobDef
obj は長い JSON 文字列としてシリアル化されるだけで、私の場合はまったく問題ありません。
job
しかし、Redis からオブジェクト全体を効果的に逆シリアル化する方法がわかりません。私がデシリアライザーに設定したタイプは似Jackson2JsonRedisSerializer(Map.class)
ていますが、文字列のキーと値をデシリアライズするときに文句を言います。
これは無効な使用法RedisTemplate
ですか、それともシリアライザーをどのように構成する必要がありますか?
編集:コードの詳細を追加し、
2回目の編集:
JdkSerializationRedisSerializer
HashValueSerializer として使用すると、逆シリアル化は正常に機能しRedisTemplate
ますが、これを使用する場合の欠点は、Redis に格納されている値が、 を使用した場合と同じ人間が読み取れる文字列値ではないことJackson2JsonRedisSerializer
です。
redis - spring-data-redis 1.7.0.M1 使用時の redis-cluster の設定方法
spring-data-redis バージョン 1.7.0.M1 と jedis バージョン 2.8.0 を使用しています。これが私の構成です
【redisTemplate.opsForValue().get("foo")】を使ってテストする
例外をスローする
spring-data-redis 1.7.0.M1 を使用する場合の redis-cluster の設定方法は?
spring-boot - Spring Boot アプリケーションで 2 番目の RedisTemplate インスタンスを作成する方法
この回答によるとRedisTemplate
、値に対して複数のシリアライザーをサポートすることはできません。そのため、さまざまなニーズに合わせて複数の RedisTemplates を作成したいと考えています。具体的には、1 つは文字列アクション用、もう 1 つはオブジェクトから JSON へのシリアライゼーション用で、RedisCacheManager
. 私は Spring Boot を使用しており、現在は自動配線されています。同じ Jedis 接続ファクトリを共有しているが、独自のシリアライザーをRedisTemplate
持つ 2 番目のインスタンスを宣言する正しい方法は何だろうか?RedisTemplate
2つの異なるコンポーネントでこのようなことを試しましたが、
コンポーネント 1 は次のように宣言します。
コンポーネント 2 は次のように宣言します。
この場合、2 つのテンプレートは実際には同じです。Spring コードをトレースすると、コンポーネント 1 のテンプレートが autoconfigured に解決されていることがわかりましたstringRedisTemplate
。
RedisTemplate
のコンストラクタを手動で呼び出しafterPropertiesSet()
ても、接続ファクトリが見つからないと不平を言うため、機能しません。
このリクエストはおそらく、Spring アプリで別の Bean を定義することと大きな違いはないことはわかっていますが、現在の Spring-Data-Redis 統合では、何が最善の方法なのかわかりません。助けてください、ありがとう。
java - Spring Redis ハッシュ操作 SCAN
私はやっていSpring Redis
ます、私はキーを次のように置きます
から検索したいList<>
、
また、機能していません。助けてください!!
spring-session - 複数の Spring セッションを同じ redis インスタンスでサポートできますか?
Java Spring で作成された Web アプリケーションがいくつかあり、 と を使用spring-data-redis
して@EnableRedisHttpSession
います。春のセッションの内部構造とは何だろうと思っていました。新しいセッションを作成する前に、redis データベースでセッション キーの重複をチェックしますか?
私は春のドキュメントを見て、グーグル検索もしましたが、決定的な答えを得ることができませんでした.
jedis - Pipeline では Jedis を使用できません。パイプラインを使用するか、jedis の状態をリセットしてください
Spring Data Redis でパイプライン コマンドを実行できません。StringRedisTemplate を使用しています。spring-data-redis 1.6.1、spring boot 1.3.2、および jedis 2.7.3 と 2.8.0 の両方。
コード:
pExpireを実行すると件名に例外で吹きます。リファレンス ガイドで提案されている別のフレーバーを試してみました。
同じ結果です。何か案が?ありがとう