CAS機能で使用するデータのバージョン詳細Opcodeはコマンドのコードに相当し下記コマンドがあります。*レスポンスのStatusは以下の種類のものがあります。インターネットプロトコルへの認証とデータセキュリティのためのフレームワーク。アプリケーションプロトコルから認証機構を分離し、SASLをサポートするもので利用可能Memcachedでは、1.4.3以上で--enabled-saslオプションを付与してビルドすることで利用可能です。以下のような定義済みのSASL機構がある。バイナリーモードのみで以下のものが提供されています。サーバが対応している認証機構のリスト化と認証リクエスト、認証継続のコマンドがあります。Dataエラー文は以下の種類があります。1.5.13以上で--enable-tlsオプションを付与して、TLSの機能を利用することも可能になりました。lookup3などがあり、Memcachedでは1997年に公開されたlookup2が使用されている。https://github.com/memcached/memcached/blob/master/jenkins_hash.cmurmur3一般的なハッシュベースのルックアップに適した非暗号化ハッシュ関数。Applebyによって作成。https://sites.google.com/site/murmurhash/RedisではMurmurHash2、MemcachedではMurmurHash3が採用されている。実装アイテム定義https://github.com/memcached/memcached/blob/master/memcached.h#L476-L503Memcached中で扱われるアイテムは以下のように_stritem構造体で定義されています。ハッシュ値が衝突した場合は、チェイン法を使用し、h_next変数に相当しています。classは以下のようにslabclass_t構造体で定義されています。Slabclass毎にアイテムのリストを持っておりslots変数に相当します。slab_listでSlab(Chunkの集合)のリストを保持しています。slabclass_t;Slab初期化https://github.com/memcached/memcached/blob/master/slabs.c#L153-L232Slabの初期化は以下のslabs_init関数で行われています。preallocをパラメータで有効にしているかで最初の挙動が分岐しています。事前割当てのオプション(-Lオプション)指定時には初めにスラブのためにメモリーを割当てておきますが、そうでない場合は不足している場合に適宜確保していく形となります。}}コネクション定義https://github.com/memcached/memcached/blob/master/memcached.h#L601-L706コネクション情報はconn構造体として以下のように定義されています。count);};コネクションのキューhttps://github.com/memcached/memcached/blob/master/thread.c#L44-L50受け付けたリクエストはCQ_ITEM構造体のリストとして以下のように定義されています。lock;};CQ_ITEM構造体は以下のように定義されており、対象のアイテムやコネクション情報が格納されています。baseを引数としてconn_new関数で呼ばれています。}https://github.com/memcached/memcached/blob/master/memcached.c#L540-L709conn_new関数で受け付けたリクエストの情報をconn構造体にセットして初期化。c;}https://github.com/memcached/memcached/blob/master/memcached.c#L148listen_connはグローバルは静的変数として以下のように宣言されています。pthread_mutex_unlock(&conn_lock);}https://github.com/memcached/memcached/blob/master/memcached.c#L5306-L5347先程初期化したコネクションをlistenしています。}}https://github.com/memcached/memcached/blob/master/memcached.h#L566-L585libeventのスレッドは、LIBEVENT_THREAD構造体として以下のように定義されています。この要素中にconn_queue構造体のnew_conn_queue変数が含まれています。LIBEVENT_THREAD;https://github.com/memcached/memcached/blob/master/thread.c#L334-L337リクエストを受け付けた際には、workerスレッドに対して以下の箇所でthread_libevent_process関数を呼び出すように設定しています。&me->notify_event);https://github.com/memcached/memcached/blob/master/thread.c#L427thread_libevent_process関数中で、先程のコネクションのキューからコネクションを取り出して、接続を介ししています。コメントをキャンセルメールアドレスが公開されることはありません。mismith227.。