Memcached : 基本操作2016/09/11 |
Telnet クライアントで接続した場合の Memcached の対話的な利用方法です。
|
|
[1] | Telnet クライアントをインストールします。 |
root@dlp:~# apt-get -y install telnet
|
[2] | 基本的な Memcached の操作です。 |
# ローカルの Memcached に接続 root@dlp:~# telnet localhost 11211 Trying ::1... Connected to localhost. Escape character is '^]'. # Memcached サーバーの利用状況を表示する stats STAT pid 10856 STAT uptime 12222 STAT time 1468912383 ..... ..... STAT evictions 0 STAT reclaimed 0 END # データを保存する # set [キー] [圧縮フラグ] [有効期間(秒)] [データサイズ(byte)] # 圧縮フラグ : 0=圧縮無し, 1=圧縮 # 有効期間=0 で無期限 # 上記コマンド入力後、改行して、キーの値をセット
set test_key 0 0 10
test_value
STORED
# データを参照する
get test_key
VALUE test_key 0 10
test_value
END
# データを置き換える replace test_key 0 0 11 test_value2 STORED get test_key VALUE test_key 0 11 test_value2 END # 既存データの後ろにデータを追加する append test_key 0 0 5 ,test STORED get test_key VALUE test_key 0 16 test_value2,test END # 既存データの前にデータを追加する prepend test_key 0 0 6 test1, STORED get test_key VALUE test_key 0 22 test1,test_value2,test END # 既存データを削除する
delete test_key
DELETED
# 既存のデータを加算する(incr) set mycounter 0 0 1 1 STORED incr mycounter 1 2 get mycounter VALUE mycounter 0 1 2 END # 既存のデータを減算する(decr) decr mycounter 1 1 get mycounter VALUE mycounter 0 1 1 END # 既存のキャッシュ済みデータを全て削除する flush_all OK |
[3] |
複数クライアント環境下で想定される問題として、get でキーの値を参照し、必要に応じて set/replace
でデータを更新する場合、自身がある特定のキーの値を get して参照し、set/replace で必要な値に更新するまでのわずかな間に
他クライアントから該当データの値を更新された場合、自身が参照した値とは別の値を更新することになり、意図しない更新をすることになります。
このような状況を回避するために CAS ID が用意されています。(CAS = Check And Set)
CAS ID は「gets」コマンドで取得でき、「cas」コマンドで取得した CAS ID を指定してデータの値を更新します。「cas」コマンドで CAS ID を指定した場合、目的のキーの値が異なる場合は、データの更新は行われず、更新の衝突を回避できます。 |
# CAS ID 付きでデータを参照する # 以下の例では 15 が CAS ID
gets test_key
VALUE test_key 0 10 15
test_value
END
# cas コマンドでデータを更新する # cas [キー] [圧縮フラグ] [有効期間(秒)] [データサイズ(byte)] [CAS ID] cas test_key 0 0 11 15 test2_value STORED gets test_key VALUE test_key 0 11 16 test2_value END |
Sponsored Link |