Zookeeper的常用命令

连接的指令:

1 ./zkClish -timeout 5000 -server 192.168.1.105:2181  ---连接
 

查询的指令:

1.h ---出现命令列表
2.ls+path 列出某个目录下的节点  zookeeper是自带的
3.stat+path:查询节点信息,该信息会包括以下的内容:
cZid:在zookeeper中,每一次操作都可以认为是一次事务,都会为它分配一个唯一的id,表示的是这个节点是在哪一个事务中被创建的,其实就是一个时间戳,是唯一的
cTime:节点创建的时间
mZxid:最后一次修改时的id,也是一个时间戳,也是唯一的。
mTime:最后一个修改的时间
pZxid:该节点的子节点最后一次被修改的事务id,删除,增加。但是修改子节点内容是不计算在内的
cVersion:也就是childrenVersion,表示的是子节点版本号
dataVersion:该节点数据版本号
aclVersion:表示的是该节点的ACL版本号
ephemeralOwner:0x0 表示的是持久节点
dataLength:用来表示的是当前节点的存放的数据的长度
numLength:当前节点的子节点个数
4.get +path 得到数据内容+stat指令输出的内容
5.ls2+path ls指令的超级指令,展示的内容相当于ls+stat指令输出的内容
 

创建的指令:

1.create [-s] [-e] path data acl
-s 表示当前创建的节点是一个顺序节点
-e:表示当前创建的节点是一个临时节点
-s -e 同时使用的时候,说明这个节点既是一个临时节点也是一个顺序节点
比如说 create /node_3 123
Create  -e /node_3/node_3_1 234 创建一个临时节点
ls /node-3
Quit 结束当前客户端与服务器端的会话
ls /node_3
发现为空,因为先前创建的是临时节点,在会话结束以后,都会自动的删除节点的信息
Create  -s  /node_3/node_3_1 234
发现在创建这个节点的时候,增加了一个序列,也就是  created /node_3/node_3_1 00000000001
当我们再使用命令 Create  -s  /node_3/node_3_1 234 时,发现我们依然是可以创建节点成功的,但是序列池增加了1,也就是
created /node_3/node_3_1 00000000002
我们可以利用zk的这个特点,来生成分布式的主键生成器
 

修改的指令:

Set path data [version]
Set /node_3 999
我们可以发现这个时候,dataVersion,这个时候会加1。也就是如果原来是1,那么
使用这个命令set,然后再使用get 命令获取状态信息时,输出的结果是2.
每次修改节点,节点的版本号会增加1。同时,不管我们的值是不是和原来的一样,版本号都会增加.
如果使用了版本号来修改 :set /node_3 999 2 ,其中的这个2,是通过get来查询得到的发现版本号变为了3 
但是这个时候,我们再使用 set /node_3 999 2 时,我们可以发现控制台中输出了错误信息
,”version no is not valid”.一定要和原来查询的一致如果在执行set 和get 的时候,有另外的一个客户端使用了set,那么
在这个时候得到的结果还是 version no is not valid.这个特性很类似乐观锁
 
 

删除相关指令:

Delete /node _3
Delete 只能删除没有子节点的节点
如果要删除含有子节点的节点:可以使用rmr /node_3.循环删除
 

设置限制相关指令:

为节点增加限制条件:如果需要为某一个节点增加限制条件,比如说,限制数据值的大小,子节点的个数等。
我们可以使用setquota -n|-b val path 
-n 表示的是限制子节点的个数
-b 表示的是限制当前节点的数据值的长度
val值:与-n -b 相关
Setquota -n 2 /node_1 限制子节点的个数
Create /node_1/node_1_3 123
我们使用ls 命令发现node_1 下有三个子节点,那么我们创建的时候,为什么不抛出异常呢?
是因为zk 发现超限了以后,它仅仅只是在日志中记录一个警告信息,而不会抛出异常。
这个警告信息是记录在哪里的呢?它在zk下的bin目录下的,发现有一个zookeeper.out目录。
使用tail zookeeper.out 发现日志中的输出的信息:当前节点包括子节点的总数是4,但是我们设置它的限额是2.
 

查看限制指令:

Listquota +path
第一行输出配额信息 :当前输出的子节点的数目是2.如果是-1,表示的是 对当前节点的数据长度没有限制
第二行输出当前节点的状态信息:
子节点包括自己的节点的个数一共有4个,数据长度值为12,
这里的bytes的数据长度值表示的是自己的数据长度加上子节点的数据长度的总和.
 

删除限制止指令:

Delquoa [-n][-b] path
Delquota -n /node_1
发现count =-1,bytes=-1.
表示执行成功了
 
 

其它指令:

Cont host:port :表示的是在当前客户端下,我们还可以使用这个命令连接到其它的服务器。
但是需要指出它的host和port。这是要注意的。
Close:我们可以连接,那么当然可以close了。
History:可以查看所有已经使用过的指令的list.每一个指令都有一个编号
使用redo +num可以重复执行这个命令。Num 表示的是 history中得出的编号。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/li12412414/article/details/80956326