Memcached : 基本操作2024/09/16 |
Telnet クライアントで接続した場合の Memcached の対話的な利用方法です。 |
|
[1] | Telnet クライアントをインストールします。 |
root@dlp:~ # pkg install -y freebsd-telnetd
|
[2] | 基本的な Memcached の操作です。 |
# ローカルの Memcached に接続 root@dlp:~ # telnet localhost 11211 Trying ::1... Connected to localhost. Escape character is '^]'. # Memcached サーバーの利用状況を表示する stats STAT pid 1092 STAT uptime 80 STAT time 1726449169 STAT version 1.6.28 STAT libevent 2.1.12-stable STAT pointer_size 64 STAT rusage_user 0.000000 STAT rusage_system 0.005038 STAT max_connections 1024 STAT curr_connections 2 STAT total_connections 3 ..... ..... STAT moves_to_cold 0 STAT moves_to_warm 0 STAT moves_within_lru 0 STAT direct_reclaims 0 STAT lru_bumps_dropped 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 # exit する quit |
[3] |
複数クライアント環境下で想定される問題として、[get] でキーの値を参照し、必要に応じて [set/replace]
でデータを更新する場合、自身がある特定のキーの値を [get] して参照し、[set/replace] で必要な値に更新するまでのわずかな間に
他クライアントから該当データの値を更新された場合、自身が参照した値とは別の値を更新することになり、意図しない更新をすることになります。
このような状況を回避するために [CAS ID] が用意されています。(CAS = Check And Set)
[CAS ID] は [gets] コマンドで取得でき、[cas] コマンドで取得した [CAS ID] を指定してデータの値を更新します。[cas] コマンドで [CAS ID] を指定した場合、目的のキーの値が異なる場合は、データの更新は行われず、更新の衝突を回避できます。 |
# CAS ID 付きでデータを参照する # 以下の例では 9 が CAS ID gets test_key VALUE test_key 0 10 9 test_value END # cas コマンドでデータを更新する # cas [キー] [圧縮フラグ] [有効期間(秒)] [データサイズ(byte)] [CAS ID] cas test_key 0 0 11 9 test2_value STORED gets test_key VALUE test_key 0 11 10 test2_value END |
Sponsored Link |
|