2

libmemcached の memcached_get() に関する質問:

ドキュメントからは、私には明らかでも可能でもないようです。データの長さを知らなくても、キーに基づいて値を取得することは可能ですか? キーの値を変更する複数のスレッドを持つことを計画しているため、以前の値の長さを保存できません。*value_lengthを NULL、0、または任意の大きな数値に設定しようとしましたが、効果はありませんでした (たとえば、プログラムがクラッシュしました)。これが null で終わる文字列で実現できることを望んでいましたが、libmemcached の内部構造がわかりません。提案、指針はありますか?thnx。

 char *memcached_get (memcached_st *ptr,
                 const char *key, size_t key_length,
                 size_t *value_length,
                 uint32_t *flags,
                 memcached_return *error);

より良いドキュメント: http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-interfaces-libmemcached.html#ha-memcached-interfaces-libmemcached-get

4

2 に答える 2

0

Memcached はキー値マシンです。strlen(key) のキーを渡すと、キーとペアになったオブジェクトへのポインター (応答) が返されます。オブジェクトを格納するストレージを malloc() し、return_value_length を介してそのオブジェクトのサイズを取得します。このアドレスは、memcached に &return_value_len として渡されます。

于 2014-04-01T20:16:45.587 に答える