人老记忆差,记一记为好
启动:在bin目录下执行 ./zkServer.sh start (启动成功会显示:Starting zookeeper ... STARTED)
客户端连接:./zkCli.sh 或指定IP连接 ./zkCli.sh -server 192.168.122.1:2181
关闭:close
[注意]:创建节点时父节点要存在才行
创建临时节点:关键字 -e ,如 create -e /a 123456(存的值) (查看ls /,如 ls /a) [注意:临时节点不能有子节点,且临时节点只要client关闭就没了]
创建永久节点:同上,只是没有 -e
创建顺序节点:同上,关键字 -s, 如 create -s /a 123456
查看节点: ls /a(列出子节点) 或 get /a(get方法可以查看保存的数据) 或 ls2 /a(列出子节点和当前节点信息)
更新节点: set /a 654321 或 set /a 654321 2(最后面的2是get命令中获取的版本号:dataVersion)
删除节点:delete /b 或 delete /b 2(最后面的2是get命令中获取的版本号:dataVersion)[注:如/b下面还有节点,那就删除失败,硬来,就用命令:rmr(有点危险),如 rmr /b]
quota命令:
使用 setquota [-n] [-b] value path
-n:子节点最大数 如:setquota -n 3 /b
-b:数值最大长度 如:setquota -b 12 /b
value:-n或-b的数值
path:节点路径
设置完后可用 listquota /path 来查看设置的效果:如 listquota /b, 删除:delquota -n /b 或者 delquota -b /b
watch:监听,监听数据改变,一次性。如:get /a watch(监听a节点的数据改变,开户多个客户端,修改a节点的数据,可以看到别的客户端有watch信息反馈),哪些命令可以监听,输入 help即可看到。
java代码:
package com.example.demo; import org.apache.zookeeper.*; import org.apache.zookeeper.data.ACL; import java.lang.String; public class TTT { private static ZooKeeper zooKeeper; public static void main(String[] args) throws Exception { zooKeeper = new ZooKeeper("192.168.126.136:2181", 100000, new Watcher() { @Override public void process(WatchedEvent watchedEvent) { try { if(watchedEvent.getPath() != null){ // 监听 System.out.println("--------------"+watchedEvent.getPath()+":"+watchedEvent.getState()+":"+watchedEvent.getType()); zooKeeper.exists(watchedEvent.getPath(), true);// watch完重新监听 } } catch (Exception e) { e.printStackTrace(); } } }); // 合建节点 zooKeeper.create("/ywj", "我".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); zooKeeper.exists("/ywj", true);// 开始监听 zooKeeper.setData("/ywj", "是".getBytes(), -1);// 修改 zooKeeper.setData("/ywj", "中".getBytes(), -1);// 修改 zooKeeper.setData("/ywj", "国".getBytes(), -1);// 修改 zooKeeper.setData("/ywj", "人".getBytes(), -1);// 修改 zooKeeper.delete("/ywj", -1);//删除 zooKeeper.close(); } }
ok....