create 命令用于在 ZooKeeper 中创建一个新节点。其语法如下:
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
参数说明:
-s:创建一个顺序节点。
-e:创建一个临时节点。
-c:创建一个容器节点。
-t ttl:设置节点的生存时间(以毫秒为单位)。
path:新节点的路径。
data:新节点的数据。
acl:新节点的访问控制列表。
(1)创建节点 /node_1,节点数据为 dataOfNode_1
[zk: localhost:2181(CONNECTED) 13] create /node_1 dataOfNode_1 Created /node_1 [zk: localhost:2181(CONNECTED) 14] ls / [hxstrive, node_1, zookeeper]
(2)创建临时节点 /node_1/node_1_1,数据为 11。注意,在会话结束后被自动删除
[zk: localhost:2181(CONNECTED) 15] create -e /node_1/node_1_1 11 Created /node_1/node_1_1 [zk: localhost:2181(CONNECTED) 16] ls /node_1 [node_1_1]
(3)创建顺序节点
[zk: localhost:2181(CONNECTED) 17] create -s /node_1/node_1_2 12 Created /node_1/node_1_20000000001 [zk: localhost:2181(CONNECTED) 18] create -s /node_1/node_1_3 13 Created /node_1/node_1_30000000002 [zk: localhost:2181(CONNECTED) 19] create -s /node_1/node_1_4 14 Created /node_1/node_1_40000000003 [zk: localhost:2181(CONNECTED) 20] ls /node_1 [node_1_1, node_1_20000000001, node_1_30000000002, node_1_40000000003]
(4)用模式创建节点,例如:
[zk: localhost:2181(CONNECTED) 15] create /zk-node-create-schema mydata digest:user1:+owfoSBn/am19roBPzR1/MfCblE=:crwad Created /zk-node-create-schema [zk: localhost:2181(CONNECTED) 16] addauth digest user1:12345 [zk: localhost:2181(CONNECTED) 17] getAcl /zk-node-create-schema 'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE= : cdrwa
(5)创建容器节点。当容器的最后一个子节点被删除时,容器也将被删除。例如:
# 创建容器节点 [zk: localhost:2181(CONNECTED) 2] create -c /container_node mydata Created /container_node # 创建容器节点的子节点 [zk: localhost:2181(CONNECTED) 3] create -c /container_node/child_1 mydata Created /container_node/child_1 [zk: localhost:2181(CONNECTED) 4] create -c /container_node/child_2 mydata Created /container_node/child_2 # 删除容器节点的所有子节点 [zk: localhost:2181(CONNECTED) 5] delete /container_node/child_1 [zk: localhost:2181(CONNECTED) 6] delete /container_node/child_2 # 等一会儿,获取容器节点信息,容器节点已经不存在了 [zk: localhost:2181(CONNECTED) 7] get /container_node Node does not exist: /container_node
注意:当容器节点中的所有子节点全部都被删除后,容器节点不会立即删除,要等一会儿才会被删除,笔者本机测试结果是这样的。
(6)创建 ttl 节点,例如:
# 创建一个 ttl 节点 [zk: localhost:2181(CONNECTED) 0] create -t 3000 /ttl_node mydata KeeperErrorCode = Unimplemented for /ttl_node # 3秒后通过 get 获取节点,发现节点已经不存在了,被自动删除了 [zk: localhost:2181(CONNECTED) 1] get /ttl_node Node does not exist: /ttl_node