我在带领团队或者给别人面试的时候,就会遇到一个情况,就是问一些操作,比如GIT的拉取和推送代码、合并代码、Redis的一些语法使用,他们大多是直接用IDE或者其他工具直接操作,但是不会命令行,这样的掌握,个人还是不太推荐的,就跟打王者一样,你会打野和你能带翻全场是两码事,带翻全场除去队友不坑的原因外,最重要的是打野意识,我们在开发过程也是如此,工具是死的,命令相对比工具要灵活,但凡工具不满足了,可以直接用命令进行操作,这才是真正是掌握了,会用工具是优势,但是支撑优势的前提是掌握实现原理
这里我使用的是windows环境,来进行基本命令行的操作,前提是启动zk服务
1、进入服务器
//默认连接本地127.0.0.1:2181的服务器
start zkCli.cmd
//指定服务器
start zkCli.cmd-server ip:port
进入之后,会弹框提示,前几行行日志是:
2、创建节点
//-s和-e分别对应的是顺序或者临时节点,不指定的话默认是创建持久节点,acl用来控制权限
create [-s][-e] path data acl
①创建顺序节点
创建一个节点名为zk-create-s的节点,节点内容是123,同时zk服务器会返回一个日志,最后面有个0000000002,表示顺序,我们来查看Znode Tree
②创建临时节点
这个节点就没有像顺序节点那样会面会加上一串数字了,但是它会在会话结束的时候自动删除,可以把zk服务停掉,然后在进入服务看看,本来是存在的
这个时候,我们quit一下,然后在刷新一下工具,查看这个节点是否存在
再刷新一下可视化工具:
这个时候我们发现,刚才的zk-create-e节点已经被删除了
③创建永久节点
创建之后的节点后面也不会存在数字,而且quit之后也不会消失
2、读取节点信息
读取的命令有两种:ls和get
ls:可以列出所有的子节点,但是智能查看指定节点下的第一级所有子节点
get:可以获取zk指定节点的数据节点和属性信息
3、更新节点信息
命令格式如下:
set path data version
示例如下:
而且dataVersion已经+1了,表示更新了一次
4、删除节点信息
命令格式如下:
delete path [version]
示例如下:
看示例是已经删除了zk-forever,但是需要注意的是,如果当前要删除的节点下还存在子节点,是不能直接删除的,要先删除子节点之后才能删除当前节点