問題タブ [hiredis]

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

c - 整数の「順序付けられていないセット」を値としてredisに保存する効率的な方法は?

約 1 億 5000 万のキーと値のペアを保存する必要があります。キーは整数で、値は整数のセット (順不同) です。32 GB の RAM と 8 コアの CPU を搭載した個人用デスクトップで、単一のインスタンスとして redis を使用しています。

これには「SADD」コマンドを使用します。私が使用するクライアントは、hiredis とパイプラインです。したがって、コマンドは次のようになります。

実行時間: Linux の「time」コマンドを使用すると、次の結果が得られます。

real: 8m 30s
user: 5m 18s
sys: 0m 7s

メモリ使用量:
redis では、データベースは約 18 GB を使用し、redis のメモリ フットプリントは 28 GB まで増加します。
キーは「94190049249988」のようになります。
"keys.bytes-per-key": (整数) 1830。

以下は、速度を向上させ、メモリフットプリントを削減するために私が試した最適化です:-

1) 速度を向上させるためのパイプライン処理。
2) メモリ フットプリントを削減するための整数のセットの格納。これは int-set エンコーディングを使用します。

これらの 1 億 5000 万個の Key-Value を保存するためのメモリ効率と速度効率の良い方法はありますか?
どうにかして HSET のような他のデータ型を使用する必要がありますか? それは役に立ちますか?
他に試すことができる最適化はありますか?

私のユースケースでの他のデータストアの推奨も高く評価されます。

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

c - なぜハイレディス関数は redisReply* の代わりに void* を使用するのですか?

私はhiredisが初めてで、v0.13を使用しています。オブジェクトhiredis.hを扱うの API 関数はすべて を使用していることに気付きました。例えば、redisReply*void*

redisReply*オブジェクト (またはNULL)を返します。

redisReply*を通じてオブジェクトを出力しますreply

コードのコメントによると、「hiredis がデフォルトで返す返信オブジェクトを解放する関数」です。</p>

ここで何が欠けていますか? これらの関数がvoid*代わりに を使用するのはなぜredisReply*ですか?

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

c - Mac OS X で C 言語でhiredis をコンパイルする

hiredisin Conを使用してクライアントをコンパイルしようとしていますMac OS X

私はインストールhiredisしました:

しかし、それでもエラーが発生します:

hiredis.hしかし、私は次の場所にあります:

コンパイラにこれを伝えるにはどうすればよいですか?

私はコンパイルしています:

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

c - TLSでhiredisが失敗する

Redisで使用するための次のコードがありますC。の基地hiredis

ただし、次のように失敗し続けます。

エラーは空白で、Redisサーバーを制御できません。

デバッグする方法は?

redisSecureConnection(c, ca, cert, key, "sni")戻るよう-1です。

Wireshark以下を出力します。

これは、SSL/TLSが試行されたことがないことを示しますClient Hello

NodeJSクライアントで試してみると、これが得られ、うまくいきます:

0 投票する
0 に答える
216 参照

c - CentOS 上の C をスタティック ライブラリにコンパイルする

次のパラメーターを使用Cして、アプリケーションをコンパイルして実行できます。CentOS

しかし、コンパイルもダウンロードもできないマシンでアプリケーションを実行する必要があります。hiredis.

したがって、すべてを自分でコンパイルする必要がありますCentOS-これはセットアップで一致します。

フラグについて読みましたstaticが、そうすると次のエラーが発生します。

私は何を間違っていますか?