問題タブ [redis-py]

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 に答える
7063 参照

redis - Redis - 他のタイプを上書きする SET

次のコード例は、Python REPL と redis-cli を介して作成/作成されます。

Redis サーバー v=2.8.4

バックグラウンド: 長期間実行されるキー (ハッシュ) を redis キー値ストアに格納し、同じキー値ストアに別のキー (名前は同じだが型は異なる文字列) を格納しようとしています。

コードが最初に来て、次に質問があります:

SET オプションが HSET を上書きすることに最初に気付くでしょう。今、SETを次のように上書きしようとすると:

または、SET を同じ HSET に置き換えます。

これが redis-py の欠陥でないことを確認するために、redis-cli でテストしました。


質問:

1) これは Redis の欠陥ですか、それとも実際に動作するはずの方法ですか?

2)これが「どのように機能するか」である場合、SETタイプを他のタイプで上書きできないのはなぜですか?

**編集:質問に答える人が理解できなかったので3)..私はそれを編集しています

3) SET 以外に、STRING を構造体 (KEY, VALUE) に格納するために使用できる他のタイプはどれですか。ここでは、HASH を (KEY, FIELD, VALUE) としても使用できます。キーは同じですが、TYPE( s)?

例えば。私はやってみたいです:

同じ「キー」の1つのハッシュと1つの「その他の」タイプがあるように12345

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

redis - 変化する Redis キーのコレクションから値の衝突を見つける

私の Web サイトでは、ユーザーは同じユーザー名を保持することが許可されています。ttlさらに、ユーザーがログインするたびに、ユーザー名を 10 分の redis キーに一時的に保存します。

問題は、Redis を使用して、過去 10 分以内にオンラインで同じユーザー名を共有しているすべてのユーザー ID を見つける方法はありますか?

現在、すべてのキーの値を抽出し、Python で衝突を見つけています。これは、実行時にこれを複数回行う必要があるため (そしてユーザー トラフィックが多いため)、あまり役に立ちません。

一意のユーザー名をキーとしてセットを作成し、すべてのユーザー ID をセットに格納して、同じユーザー名を共有するユーザーを O(1) 検索できるようにすることができたのではないかと仮定します。ただし、10 分間の ttl 条件 (すべてのユーザー名に個別に必要) を犠牲にする必要があります。

ところで、Redis/Lua の初心者なので、noob の質問 (もしそうなら) です。

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

redis - Redis (redis-py) はいくつのチャネルを処理できますか?

多数のリスナーに pub/sub を使用するタスクがあります。docsからのサブスクリプションの簡単な例を次に示します。

channel のクライアントをサブスクライブするとしますclient-#id。クライアントごとに 1 つのチャネル。問題は、数百または数千のユーザーがいる場合、この方法を使用しても問題ないかということです。それらすべてを 1 つのチャネルにサブスクライブuser-#idし、メッセージをエンコードして受信時にフィルタリングする必要がありますか?

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

python - Pyspark が foreach または foreachPartition に引数として渡されたメソッドの環境変数を認識しない

以下のコード では、URL で env 変数を使用してredis-py接続をインスタンス化しようとしています。問題は、foreach または foreachPartitionを使用すると、env 変数が #save_on_redis メソッドで認識されないことです。

外部で redis 接続を作成しようとしましたが、"pickle.PicklingError: Can't pickle 'lock' object"が表示されました。これは、spark がこれら 2 つのメソッドをすべてのノードで同時に実行しようとするためです。

質問: foreach または foreachPartition に引数として渡されるメソッドで環境変数を使用するにはどうすればよいですか?