一、连接
进入ZooKeeper安装目录下的bin目录,输入如下命令进入ZooKeeper的客户端
代码语言:javascript复制./zkCli.sh
成功进入后显示如下:
二、使用
1、查看节点
命令格式:
代码语言:javascript复制ls [-s] [-w] [-R] path
参数 | 描述 |
---|---|
-s | 除了显示节点,还额外显示节点的详细信息 |
-w | 简单显示节点 |
-R | 显示路径及路劲下的所有子节点 |
查看下不同参数显示的不同结果
代码语言:javascript复制ls /
运行结果:
代码语言:javascript复制ls -w /
运行结果:
可以看出-w就是ls的默认参数
代码语言:javascript复制ls -R /
运行结果:
代码语言:javascript复制ls -s /
运行结果:
-s参数显示的文件信息有点复杂,我们来对各个信息内容做一下描述
详细信息项 | 描述 |
---|---|
cZxid | 该数据节点被创建时的事务id,由64位数字组成,分为高32位和低32位 |
ctime | 该数据节点创建时间 |
mZxid | 该数据节点被修改时最新的事物id |
mtime | 该数据节点最后修改时间 |
pZxid | 当前节点的父级节点事务ID |
cversion | 子节点版本号(子节点修改次数,每修改一次值 1) |
dataVersion | 当前节点版本号(可以理解为修改次数,每修改一次值 1) |
aclVersion | 当前节点的acl权限版本号,初始版本为0 |
ephemeralOwner | 临时节点标示,当前节点如果是临时节点,则存储的创建者的会话id(sessionId),如果不是,那么值=0 |
dataLength | 当前节点存储的数据的大小 |
numChildren | 当前节点的子节点个数 |
2、创建节点
命令格式:
代码语言:javascript复制create [-s] [-e] [-c] [-t ttl] path [data] [acl]
参数 | 描述 |
---|---|
-s | 创建序列节点 |
-e | 创建临时节点 |
-c | 创建永久节点 |
acl | 访问控制列表,用来控制节点的权限 |
-t | 设置存活时间(针对持久节点,单位秒);需要开启,默认是关闭的。 |
2.1、创建永久节点
代码语言:javascript复制create /testC "testCValue"
有的版本不写后面的"testCValue"会创建不成功
运行结果:
查看节点详情信息
代码语言:javascript复制get -s /testC
2.2、创建临时节点
代码语言:javascript复制create -e /testE "testEValue"
运行结果:
查看节点详情信息
代码语言:javascript复制get -s /testE
可以看到临时节点详情数据中ephemeralOwner的值不为0,说明该节点是个临时节点,本次会话退出后,临时节点将会被自动删除
2.3、创建顺序节点
代码语言:javascript复制create -s /testS "testSValue"
运行结果:
查看节点详情信息,顺序节点有点不一样,在创建节点的时候会在节点名称后面增加10位的序号,所以查看节点时就需要带上序号,否则会提示节点不存在
代码语言:javascript复制get -s /testS
下图就是上面命令的执行结果,报节点不存在。
代码语言:javascript复制get -s /testS0000000013
3、查看节点数据
命令格式:
代码语言:javascript复制get [-s] [-w] path
参数 | 描述 |
---|---|
-s | 查看节点的详细信息 |
-w | 查看节点信息 |
4、更新节点
命令格式:
代码语言:javascript复制set [-s] [-v version] path data
参数 | 描述 |
---|---|
-s | 更新节点数据后返回节点的详细信息 |
-v | 指定更新节点的版本,对应节点的dataVersion的值 |
示例:
代码语言:javascript复制set -s /test "testValue"
运行结果:
上图的dataVersion现在的值是7,我们指定版本更新下数据
代码语言:javascript复制set -s -v 7 /test "testValue7"
运行结果:
我们也可以通过get命令查看节点的详情
代码语言:javascript复制get -s /test
5、删除节点
删除节点有两个命令,分别是delete和deleteall delete命令不能删除包含子节点的节点,命令格式:
代码语言:javascript复制delete [-v version] path
示例:
代码语言:javascript复制delete /test
如果/test节点包含子节点,则会给出提示
deleteall命令可以删除节点以及包含的所有子节点,命令格式:
代码语言:javascript复制deleteall path [-b batch size]
示例:
通过查看/test节点下还包含aaa节点,我们执行以下命令:
代码语言:javascript复制deleteall /test
执行后再查看节点数据,可以发现/test他所包含的子节点都被删除了
代码语言:javascript复制ls -R /