创建
create 创建持久化节点
# 创建节点
$ create /test mytest
Created /test
$ ls /test
[]
$ get /test
mytest
cZxid = 0xd86
ctime = Thu Jul 18 14:06:38 CST 2019
mZxid = 0xd86
mtime = Thu Jul 18 14:06:38 CST 2019
pZxid = 0xd86
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
create -e 创建临时节点
# 创建持久节点
$ create /test/tmp abc
Created /test/tmp
# 创建临时节点
$ create -e /test/tmp2 abc
Created /test/tmp2
# 校验节点信息
$ ls /test
[tmp2, tmp]
# 重新连接后再次校验
$ quit
# 临时节点已经去掉
$ ls /test
[tmp]
create -s 创建带序号节点 创建带序号节点
# 重复创建三次节点
$ create -s /test/seq aa
Created /test/seq0000000001
$ create -s /test/seq aa
Created /test/seq0000000002
$ create -s /test/seq aa
Created /test/seq0000000003
# 查看节点创建结果
$ ls /test
[seq0000000000, seq0000000003, seq0000000001, seq0000000002]
修改
set 修改节点
$ get /test/tmp
abc
cZxid = 0xda0
ctime = Thu Jul 18 14:14:41 CST 2019
mZxid = 0xda0
mtime = Thu Jul 18 14:14:41 CST 2019
pZxid = 0xda0
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
$ set /test/tmp efg
cZxid = 0xda0
ctime = Thu Jul 18 14:14:41 CST 2019
mZxid = 0xda4
mtime = Thu Jul 18 14:17:01 CST 2019
pZxid = 0xda0
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
$ get /test/tmp
efg
cZxid = 0xda0
ctime = Thu Jul 18 14:14:41 CST 2019
mZxid = 0xda4
mtime = Thu Jul 18 14:17:01 CST 2019
pZxid = 0xda0
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
删除
delete 删除单个节点
rmr 递归删除
# 查看结果之前的数据
$ ls /
[zookeeper, test, testwatch]
# 里边有直接点直接删除会报错
$ delete /test
Node not empty: /test
# 递归删除
$ rmr /test
# 查看删除结果
$ ls /
[zookeeper, testwatch]
监听
注意监听的原理:监听只是将监听器放在服务器的监听队列里边, 下线后就不见了
get 监听节点数据的变化
# 客户端1 准备好测试节点
$ create /test/aa abc
Created /test/aa
$ ls /test
[aa]
# 客户端2 添加监听器到队列这种
$ get /test/aa watch
# 客户端1 修改节点数据
$ set /test/aa efg
# 客户端2 输出
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/test/aa
ls 监听子节点数据的变化
可以监听子节点的创建和删除, 不能监听子节点的修改
测试监听节点的创建
# 客户端2 监听目录节点
$ ls /test watch
# 客户端1 创建子节点
[zk: localhost:2181(CONNECTED) 8] create /test/bb 123
Created /test/bb
# 客户端2 收到节点创建消息
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/test
测试监听节点的创建
# 创建将要删除的节点
[zk: localhost:2181(CONNECTED) 9] create /test/bb2 123
Created /test/bb2
# 客户端2 监听目录节点
$ ls /test watch
# 客户端1 山是生成节点
$ delete /test/bb2
# 客户端2 收到节点删除消息
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/test
测试监听节点的修改可自己试下