問題タブ [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 - Spring Data の目的とその抽象化レベルは何ですか?
「Spring Data」の目的を理解しようとしているときに、この記事に出くわし、Gemfire/Redis リポジトリとそれに対応する Spring-Data コンポーネントを使用していくつかの例を試しました。誰かが次の質問を手伝ってくれませんか。
シナリオ: GemFire が私のデータストアだったとき、CRUD 操作を実行するために、GemFireTemplate でメソッドcreate、get、removeを使用する必要がありました。Redis が私のデータストアだったとき、RedisTemplate でメソッド.opsForHash().put 、 .opsForHash().get 、および .opsForHash().deleteを使用して、同じ CRUD 操作を実行する必要がありました。
質問:
Spring-Data は、基礎となるデータ ストアに一定レベルの抽象化を提供することになっていませんか? それぞれの CRUD メソッドを知っていて、基礎となるデータ ストアに基づいて異なる API を持っていることが期待される場合、Spring-Data コンポーネントはどのような抽象化をもたらしますか? Gemfire 用の Jedis または Java クライアントを直接使用して、これらのデータストア固有の CRUD 操作を実行することはできませんか?
このリンクはそれを説明しているようですが、それを理解するには助けが必要なようです。
すべての永続ストアに対する一般的な API はありません。違いはあまりにも根本的です。ただし、Spring Data プロジェクトは、データにアクセスするための共通のプログラミング モデルを提供します。
java - Spring データ redis アトミック整数変数キー名
おそらく何か大きなものが欠けていると思いますが、Spring Data redis を使用して特定のキーでアトミックなデクリメントを行うにはどうすればよいですか?
RedisAtomicLong
とはRedisAtomicInteger
、インスタンス化中に指定したキーにバインドされます。
選択したキーでアトミックデクリメントを行うにはどうすればよいですか?
マルチ実行に頼る必要がありますか? バニラの redis では、DECR コマンドを使用するだけで、マルチ exec に頼ることなく任意のキーをアトミックにデクリメントできます。ここで何か不足していますか?
ありがとう、リチャード。
java - Spring-data-redis RedisMessageListenerContainer に競合状態があるようです
このlazyListen()
メソッドはlistening
フラグを true に設定し、スレッドを開始して SubscriptionTask を実行します。その後、同じJedisConnectionaddMessageListener()
を使用してさらにトピックをサブスクライブします。しかし、SubscriptionTask の起動プロセスにはガードがなく、addMessageListener()
そのプロセスが完了する前に への呼び出しが到着する可能性があるため、サブスクリプションが完全に失われるか、両方のスレッドが同時に同じ出力ストリームに書き込む可能性があるため、Redis には破損したメッセージが送信されます。指図。
すべてのトピックがサブスクライブ解除された後にタスクがシャットダウンされると、同様の問題が発生します。プールに返される前に、新しい subscribe コマンドが接続で送信される可能性があります。その接続が非サブスクリプション コマンドに使用されると、エラーが発生します。
この問題は、トピックにサブスクライブし、サブスクリプション タスクが完全に確立されるまで待ってから接続を許可し、サブスクライブを解除しないことで軽減できます。ただし、例外がスローされたためにタスクがシャットダウンされた場合でも発生する可能性があるため、次にトピックがサブスクライブされるときに新しい SubscriptionTask が作成されます。
java - Spring Redis Cache で複数の型をシリアル化するには?
は単一のRedisCacheManager
RedisTemplate のみを受け取ります。つまり、単一タイプのオブジェクトのみをシリアル化できます。
複数のタイプのオブジェクトをシリアル化する必要があるため、どうすればよいですか?
java - spring data redis マスター スレーブ構成
以下は私のジェディスの設定です
この構成は、サーバーが 1 つの場合にうまく機能します。私がやりたいことは、1 つの redis マスターと複数の redis スレーブを持つことです。redis のドキュメントによると、読み取りはスレーブから、書き込みはマスターから行う必要があります。書き込みにマスターを使用し、読み取りにスレーブを使用するように上記の構成を変更するにはどうすればよいですか?
私のマスターが 192.168.10.10 にあり、スレーブが localhost にあるとしましょう。
ありがとう!
redis - redis の「keys」コマンドを使用してキーと値の両方を取得する方法
キーと値の両方を取得したい。今、私はこのようにやっています:
まず、「abc」で始まるすべてのキーを取得する必要があります。次に、値を 1 つずつ取得します。
一度にキーと値の両方を取得できますか?
更新:
ありがとうソヴェラン。
各ユーザーに関連付けられたいくつかのプロパティがあります。
Tom.loginTimes と Tom.tradeMoneyCount の 2 つの別個のキーを定義する前に。今、私は hmset を使うべきだと思います:
ありがとう。
redis - redis テンプレートを使用してスキャンできません
SCAN http://redis.io/commands/scanを使用して、redis に存在するすべてのキーを反復しようとしています。しかし、Spring が提供する Redis テンプレートには scan() メソッドがありません。上記を使用するためのトリックはありますか?
ありがとう
spring-data - Spring データ redis の redisTemplate の接続を取得できません
Jedis を使用して Spring データ Redis を使用してチャネルにメッセージを公開しようとしています。これは非常に単純な Java 構成です。
ここで、redisPort=6379 および redisHostName="localhost" です。
次のテストを実行すると:
次のスタックトレースを取得します。
spring-boot - Redis が存在しない場合の起動時に Spring Boot サービスが失敗するのを防ぐ
spring-boot-starter-redis 依存関係を使用して、Spring Boot (v1.2.3) と Spring Data Redis を使用するサービスが多数あります。
また、Spring セッションとそれに対応する redis 依存関係を使用しています
redis サーバーが起動していないか、到達できない場合、サービスは失敗を発行し、起動を中止します。
サービスが起動時に失敗しないようにすることは可能ですか? そのためには何を設定する必要がありますか?
注: 重大な障害を追跡しましたが、これは Spring Session の Redis サポートにあります。ここでスローされた障害は、波及してサービスの障害を引き起こします。redis への接続が失敗した場合、通常のセッションにフォールバックすることは可能ですか?