MemoSTM関係のことをメモっていこうと思います。この広告は、90日以上更新していないブログに表示しています。libmemcachedをcythonで包んだラッパ。失敗したら論理エラーだろうが物理エラーだろうが全部数字の0を返すというダメっぷりに辟易。libmemcachedを純Cで包んだラッパ。casのセマンティクス上の失敗)ならきちんとboolで返って来るし、通信ミスなどの物理エラーはきちんと例外飛ばしてくれる。マルチスレッドの時に不気味な高パフォーマンスを叩き出すけれど挙動がまともじゃない、必要なロックを取ってないんじゃないかと思う。PyPyでも動くんだけど何故か低速化する。全体的にパフォーマンスは高いけれど、まだバグがある気がする。プロジェクトがgithub上に置いてあるので気軽にパッチ投げれる、育てるならこれ。純粋にPythonで書かれたクライアントライブラリ。使ってて明らかにおかしい挙動を示したことは無い。Falseで返り、物理エラーは0で返るという狂気。isinstanceで切り分ける事になる。意地でも例外投げない哲学で書いたんだと思う。このpython-memcacheが今のところ一番信頼出来る実装と判断したので使ってるのだけれど問題が幾つかあるコンストラクタでcache_cas=Trueしないとcasコマンドを全部setコマンドでそのまま代用するという大変Kooolな事をやらかしてくれる。警告か例外投げればいいのに。全部Falseで返して欲しかった。危険方向に倒すというのがイミフ。cache_casするとcas_idsというディクショナリにそのID値が蓄積されるのだけれど、ディクショナリなので無尽蔵に保存し続けると消せなくなって実質リークするので、ときどきreset_cas()コマンドを発行して回避する必要がある。cas_ids[key]してしまって何も問題ない。そんなリークもどきに頭を悩ますぐらいならPythonにはpylruという良いLRU実装があるのでそれを使うべき。その速度差がどうのなんて気にする人は多分初めから純Python実装なんて物を選ばない。Pickleでシリアライズしている。これ自体はどうでもいいのだけれどJSONやmsgpackなどに随時すげ替えれる構造にしてくれると助かる人は多そう。PickleをPython以外から扱うのは面倒なので、初めから多言語文化のある物で保存できると素敵なのでは。Launchpadに本体が置いてあるので気軽にパッチを投げれない。バグトラックを見る限り機能追加などの要望がほとんどでこういう基本的なところをきちんとしろという類の要望が無い。memcachedの機能なんてSQLの補助やちょっとしたblobストアぐらいにしか思ってない人が主流なのかもしれない。mc.gets("fooo")None酷い挙動だと思う。月別アーカイブはてなブログをはじめよう!kumagiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。