思考停止Macportsでmemcached あとPythonから叩く

ぶっちゃけ作業をはじめるまで memcached が何か知らなかったのだが、なんとなくインメモリデータベース的な何かだと思っていた。テンポラリーなデータ置き場。
いまでも理解が微妙なところなのでmemcachedを知り尽くす:第1回 memcachedの基本|gihyo.jp … 技術評論社をあとで読んどく。


Macmemcachedを使う。今BOTを作っていて本番環境はUbuntuなのだが、Macでもごにょごにょするために portsからインストールしてみた。
とはいっても、調べると面倒臭い手順を公開してるばかりのページがヒットして、カッとして sudo port install memcached したら通ってしまった。(悪い癖なのでそのうちどうにかしないと)


起動時の登録は以下を参考に。
ベイエリア情報局: Mac OS X に memcached をインストールして launchd で自動起動するようにした
~/Library/launchAgents/memcached.plist として以下を保存

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
        <key>Label</key>
        <string>memcached</string>
        <key>OnDemand</key>
        <false/>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/memcached/bin/memcached</string>
                <string>-m 32</string>
        </array>
</dict>
</plist>

% launchctl load -w Library/LaunchAgents/memcached.plist
% launchctl list
memcached
% ps x|grep memcached
6286 ?? Ss 0:00.07 /opt/memcached/bin/memcached -m 32


Pythonから使いたかったので Python-memcached を easy_install で導入

sudo easy_install memcache

python-memcached: Python API for memcached


とりあえずハローワールド的な

import memcache 
mc = memcache.Client(['localhost:11211']) 
mc.flush_all() # データをリセット(全部消える)
mc.set('key', 'value') # 'key'に'value'をセット
mc.get('key') # 'key'の値を取り出す

参考:pythonでmemcachedを使ってみた | Ken's blog

当たり前ですが この後にflush_all()すると'key'の値は消えます