問題タブ [jedis]

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.

0 投票する
1 に答える
3913 参照

java - Redis ハッシュの書き込み速度が非常に遅い

私は非常に奇妙な問題に直面しています.redisを使用すると、書き込み速度が非常に遅くなります(理想的な世界では、書き込み速度はRAMの書き込み速度に近づく必要があります)。

これが私のベンチマークです:

RandomStringランダムな文字列を生成するクラスです (引数は文字列の長さです)

以下は、いくつかの結果です。

[書き込み]nb:100000|時間:4.408319378|速度:0.713905907055318 MB/秒 [書き込み]nb:100000|時間:4.447246995|速度:0.707656949946542 MB/秒

設定ファイルの save to hdd パラメータを変更しようとしましたが、改善されませんでした。

私には2つのアイデアがあります:
1.クライアントとサーバー(redis)が同じマシン上にあるため、ソケットの問題です
2.コネクタの実装にはパフォーマンスの問題があります

更新セット操作のベンチマーク結果:

====== SET ======
10000 リクエストが 0.09 秒で完了
50 の並列クライアント
3 バイトのペイロード
キープアライブ: 1

99.51% <= 1 ミリ秒
100.00% <= 1 ミリ秒
111111.11 リクエスト/秒

システム仕様 :
- Ubuntu 11.04
- 8GB RAM
- Intel i5 プロセッサ

どんな提案でも大歓迎です。

0 投票する
1 に答える
353 参照

java - javaクライアントを使用してredisからerlang用語を読み取る方法は?

たとえば、タプル T = {k1, v1, k2, v2} を jedis で redis に保存します。

以下のコードを使用して、この erlang 用語を読み取ろうとしています。

エラー: com.ericsson.otp.erlang.OtpErlangDecodeException: 不明なデータ型: 239。

では、どうすれば erlang 用語を正しく取得できますか?


Erlang 側:

term_to_binary({k1, v1, k2, v2})。

<<131,104,4,100,0,2,107,49,100,0,2,118,49,100,0,2,107,50, 100,0,2,118,50>>

Java 側:

j.get("mykey").getBytes():

-17 -65 -67 104 4 100 0 2 107 49 100 0 2 118 49 100 0 2 107 50 100 0 2 118 50.

最初の 3 バイトだけが異なるようです。そこで、それらを byte(131) に変更すると、System.out.println(OtpErlangObject.decode(ois)) で正しく印刷できます。

ただし、リストが含まれるレコードなど、用語がより複雑な場合は機能しません。データの先頭だけでなく、末尾や途中にも他の文字が表示されるためです。

保存したデータが取得したデータと異なるのはなぜですか?

0 投票する
3 に答える
8250 参照

java - Jedis - returnBrokenResource() をいつ使用するか

正確にいつこのメソッドを使用する必要があるか。JedisConnectionException、JedisDataException、または任意の JedisException の場合。私の知る限り、Jedis に関する適切な API ドキュメントはありません。

0 投票する
1 に答える
109 参照

heroku - 結果を伴う非同期作業キューの正しいアプローチは何ですか?

Heroku に REST サーバーがあります。REST サービス用の N-dyno とワーカー用の N-dyno があります。

基本的に、私はいくつかの長期にわたる休息リクエストを持っています。これらが入ってきたら、ワーカーの 1 つに委任し、クライアントにリダイレクトを与えて操作をポーリングし、最終的に操作の結果を返したいと考えています。

これには、RedisToGo の JEDIS/REDIS を使用します。私が知る限り、これを行うには2つの方法があります。

  1. PUB/SUB 機能を使用できます。パブリッシャーに作業結果の一意の ID を作成してもらい、これらをリダイレクト URI で REST クライアントに返します。
  2. 基本的には同じですが、PUB/SUB の代わりに RPUSH/BLPOP を使用します。

1位のメリットがよくわかりません。たとえば、LongMathOperation というタスクがある場合、このリストを単純に作成できるように思えます。リスト要素は、算術演算の引数と、結果を配置する場所として REST サーバーによって生成された UUID を持つ JSON オブジェクトです。次に、すべてのワーカー dyno が BLPOP 呼び出しをブロックするだけで、最初の dyno がジョブを取得して処理し、UUID のキーを使用して結果を REDIS に入れます。

わかる?だから私の質問は、「PUB/SUB を使用する方がこれより優れているのはなぜですか?」ということです。PUB/SUB は、私が見逃していることをここでテーブルにもたらしますか?

ありがとう!

0 投票する
2 に答える
7115 参照

exception - Jedis クライアントとのトランザクションでの Redis 例外

私の redis チャネルでの重複を避けるために、Redis セットにインデックスを保持することで、メッセージが既に存在するかどうかを確認しています。以下は私の実装です。ただし、例外を与えています。

これが実装です。

まったく同じメッセージを公開する可能性のある複数のパブリッシャーが存在するため、トランザクション内で get を実行する必要があります。

0 投票する
1 に答える
205 参照

java - Spring Jetty と Camel でリソースを処理する正しい方法

私は webapp (Jetty、Spring、Camel) を持っています。今度は、Camel ルートで (Jedis を使用して) Redis に接続したいと考えています。Jedis プールを作成する場所 (および時期) と Camel ルートでこのプールにアクセスするにはどうすればよいですか? Camel コンテキスト XML でプールを作成することを考えていました。しかし、ルート (Java DSL) でこのプールにアクセスする方法がわかりません。

0 投票する
2 に答える
5471 参照

spring - Spring data Redis HGETALL operation

I am using Redis as data store for my spring web application and using Spring Data-Redis as my client to interact with Redis.

I am using HashMap to store one my objects having multiple fields. I am able to put all the fields into Redis at once using DefaultRedisMap.putAll() method, but I am not able to get the whole object at once instead using BoundHashOperations to get each field using get() method.

I am wondering is there any way I can do that just like HGETALL operation supported in Redis?

0 投票する
1 に答える
10467 参照

concurrency - 複数の並行プログラムが同じハッシュ キーで読み取り/削除を行っている場合の Redis の動作

Redis HASH ( ) に定期的に書き込むプログラム ( program_1) (Jedis ベース) があります。KEY_1定期的に実行する別のプログラム ( program_2) (別の JVM プロセス) があり、Redis トランザクションで次のことを行います。

私の仮定は、program_2 が (KEY_1 を使用して) HASH を削除したときに、次に program_1 が実行されたときに HASH が再び作成されるというものです。これは正しいです ?