memcachedはキャッシュなので、
memcachedはデータ削除もリソースを有効活用する
memcachedから実際にデータは消えない
前回の記事で紹介させていただきましたが、
Lazy Expiration
memcachedは内部的にレコードがexpireしたかの監視を行いません。替わりにgetする際にレコードのtimestampを見ることで、
LRU: 有効的にキャッシュからデータが消える仕組み
memcached はtimeoutしたレコードの領域を優先的に再利用しますが、
ユースケースによっては、
$ memcached -M -m 1024
スタートアップ時に気をつけないといけない点は、
“-M”
memcachedの最新動向
現在、
バイナリプロトコルに関して
バイナリプロトコルを採用した理由は、 プロトコルのパケット形式は24バイトの固定長フレーム、 ご覧の通り、 各々の要素に関して詳しく知りたい場合は、 HEADERの形式を見て私が思ったことは、 バイナリプロトコルは次世代の1. 実験的に、 この改造をMySQLのBrian Akerに見せたら、 世の中に多数存在するmemcachedのfork 外部エンジンのロードメカニズムでは、 このプロジェクトで我々がもっとも重要視したことはAPIの設計です。ファンクションの数が多すぎるとエンジンデベロッパーに面倒な思いをさせてしまったり、 詳しい仕様に興味のある方はengineプロジェクトのコードをチェックアウトしてengine. memcachedを外部ストレージ対応にさせる点で難しいことは、 リファクタ後にバージョン1. 外部エンジンのロードをサポートする過程で、 これらのハックによりmemcachedの可能性が広がればと思います。 memcachedのタイムアウトの仕組みや、 さて、 次回からは長野がmemcachedの運用ノウハウや互換アプリケーションなどを紹介します。バイナリプロトコルの形式
Byte/ 0 | 1 | 2 | 3 |
/ | | | |
|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
+---------------+---------------+---------------+---------------+
0/ HEADER /
/ /
/ /
/ /
+---------------+---------------+---------------+---------------+
24/ COMMAND-SPECIFIC EXTRAS (as needed) /
+/ (note length in th extras length header field) /
+---------------+---------------+---------------+---------------+
m/ Key (as needed) /
+/ (note length in key length header field) /
+---------------+---------------+---------------+---------------+
n/ Value (as needed) /
+/ (note length is total body length header field, minus /
+/ sum of the extras and key length body fields) /
+---------------+---------------+---------------+---------------+
Total 24 bytes
Byte/ 0 | 1 | 2 | 3 |
/ | | | |
|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
+---------------+---------------+---------------+---------------+
0| Magic | Opcode | Key length |
+---------------+---------------+---------------+---------------+
4| Extras length | Data type | Reserved |
+---------------+---------------+---------------+---------------+
8| Total body length |
+---------------+---------------+---------------+---------------+
12| Opaque |
+---------------+---------------+---------------+---------------+
16| CAS |
| |
+---------------+---------------+---------------+---------------+
Byte/ 0 | 1 | 2 | 3 |
/ | | | |
|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|
+---------------+---------------+---------------+---------------+
0| Magic | Opcode | Key Length |
+---------------+---------------+---------------+---------------+
4| Extras length | Data type | Status |
+---------------+---------------+---------------+---------------+
8| Total body length |
+---------------+---------------+---------------+---------------+
12| Opaque |
+---------------+---------------+---------------+---------------+
16| CAS |
| |
+---------------+---------------+---------------+---------------+
HEADERを見て気になる点
外部エンジン対応
外部エンジン対応の必要性
簡素なAPI設計が成功の鍵
現状のアーキテクチャを見直す
まとめ