前邊我們已經講過了什麼是etcd以及安裝方式,這裡補充一下,我們配置了etcd的環境變數,執行etcd etcdctl命令很方便 當我們執行etcd命令的時候,你在哪裡執行的那麼就會在此目錄下生成一個default.etcd的資料庫資料夾裡面存放etcd的各種資料,這個得要注意哦,千萬別傻不愣登的就刪除了!
特別提醒:etcd命令還是比較多的 當然和redis來比少多了,這裡只是總結了很少一部分 命令列模式 像curl模式我沒寫 大家可以去www.orchome.com/620 這篇文章當中看到更多精彩的內容
接下來我們記錄一下etcd的命令的簡單操作,這也跟redis的學習是一個套路,你得先懂人家的命令啊,然後在用php或者golang去操作redis或者etcd,都是一個套路
還是要看手冊:
etcd.io/docs/v3.4.0/demo/#access-e...
找打access etcd環節
裡面各種操作
etcdctl --endpoints=$ENDPOINTS put foo "Hello World!"
此命令當中的 –endpoints-$ENDPOINTS 只有在叢集環境當中才會用到目前我們是單機版所以先忽略過去!
put get del命令:
//-------------------------------------------------------
//設定 key為name value為huxiaobai
etcdctl put name "huxiaobai"
//獲取key為name的值
etcdctl get name
//-------------------------------------------------------
//設定字首名稱都為web的key以及value值
etcdctl put web1 value1
etcdctl put web2 value2
etcdctl put web3 value3
//通過字首批量獲取web開頭的key的值
etcdctl get web --prefix
//-------------------------------------------------------
//刪除key為web1的鍵值對
etcdctl del web1
//刪除一個或者多個字首為web開頭的鍵值對
etcdctl del web --prefix
//-------------------------------------------------------
txn事務
txn從標準輸入中讀取多個請求,將它們看做一個原子性的事務執行。事務是由條件列表,條件判斷成功時的執行列表(條件列表中全部條件為真表示成功)和條件判斷失敗時的執行列表(條件列表中有一個為假即為失敗)組成的。//先設定上值flag = 1 $ etcdctl put flag 1 OK //txn事務開始 $ etcdctl txn -i compares: value("flag") = "1" //輸入空格確認 我輸入了兩次 //設定上邊驗證成功了該怎麼辦? success requests (get, put, delete): //成功了就put設定值 put result true //設定上邊失敗了怎麼辦? failure requests (get, put, delete): //失敗了也是put值 put result false SUCCESS OK //然後驗證 $ etcdctl get result result true
解釋:
etcdctl put flag 1設定flag為1
etcdctl txn -i開啟事務(-i表示互動模式)
第2步輸入命令後回車,終端顯示出compares:
輸入value(“flag”) = “1”,此命令是比較flag的值與1是否相等
第4步完成後輸入回車,終端會換行顯示,此時可以繼續輸入判斷條件(前面說過事務由條件列表組成),再次輸入回車表示判斷條件輸入完畢
第5步連續輸入兩個回車後,終端顯示出success requests (get, put, delete):,表示下面輸入判斷條件為真時要執行的命令
與輸入判斷條件相同,連續兩個回車表示成功時的執行列表輸入完成
終端顯示failure requests (get, put, delete):後輸入條件判斷失敗時的執行列表
為了看起來簡潔,此例項中條件列表和執行列表只寫了一行命令,實際可以輸入多行
總結上面的事務,要做的事情就是flag為1時設定result為true,否則設定result為false總結上面的事務,要做的事情就是flag為1時設定result為true,否則設定result為false
事務執行完成後檢視result值為true
watch監聽
watch後etcdctl阻塞,在另一個終端中執行etcdctl put flag 2後,watch會列印出相關資訊$ etcdctl watch flag PUT flag 2
lease租約
etcd也能為key設定超時時間,但與redis不同,etcd需要先建立lease,然後使用put命令加上引數–lease=<lease ID>
來設定$ etcdctl lease grant 100 lease 38015a3c00490513 granted with TTL(100s) $ etcdctl put k1 v1 --lease=38015a3c00490513 OK $ etcdctl lease timetolive 38015a3c00490513 lease 38015a3c00490513 granted with TTL(100s), remaining(67s) $ etcdctl lease timetolive 38015a3c00490513 lease 38015a3c00490513 granted with TTL(100s), remaining(64s) $ etcdctl lease timetolive 38015a3c00490513 --keys lease 38015a3c00490513 granted with TTL(100s), remaining(59s), attached keys([k1]) $ etcdctl put k2 v2 --lease=38015a3c00490513 OK $ etcdctl lease timetolive 38015a3c00490513 --keys lease 38015a3c00490513 granted with TTL(100s), remaining(46s), attached keys([k1 k2]) $ etcdctl lease revoke 38015a3c00490513 lease 38015a3c00490513 revoked $ etcdctl get k1 $ etcdctl get k2 $ $ etcdctl lease grant 10 lease 38015a3c0049051d granted with TTL(10s) $ etcdctl lease keep-alive 38015a3c0049051d lease 38015a3c0049051d keepalived with TTL(10) lease 38015a3c0049051d keepalived with TTL(10) lease 38015a3c0049051d keepalived with TTL(10)
lease grant <ttl>
建立lease,返回lease ID。建立的lease生存時間大於或等於ttl秒(TODO:為什麼可能大於?)lease revoke <lease ID>
刪除lease,並刪除所有關聯的keylease timetolive <lease ID>
取得lease的總時間和剩餘時間lease keep-alive <lease ID>
此命令不會只更新一次lease時間,而是週期性地重新整理,保證它不會過期。
本作品採用《CC 協議》,轉載必須註明作者和本文連結