天天看點

python aerospike client 實作CAS更新操作

有需求是對aerospike的資料先取出來,修改後再寫入aerospike,這個時候就需要實作aerospike的CAS(Compare and Set/Swap)操作。Google以後發現利用Generation policy可以實作。

先記錄讀取資料時傳回的

meta

資訊,然後

put()

的時候比較當時的meta資訊與讀資料時的是否一緻,一緻時才寫入,否則會報錯。

代碼:

bin_name = ['bin1', 'bin2']
(key, meta, bins) = client.select(key, bin_name)
# processing bins
process_bins(bins)

policy = {
    "exists": aerospike.POLICY_EXISTS_UPDATE,
    "gen": aerospike.POLICY_GEN_EQ
}
meta = {"gen": meta['gen']}
client.put(key, bins, meta=meta, policy=policy)