一个交互式命令行的memcache客户端。
安装
本项目基于 node.js
和 npm
, 如果你尚未安装node.js, 请至官网获取安装方式。
1 | npm install -g mem-cli |
-g参数用于全局安装,这样你可以在任意目录执行mem-cli
本地安装方式如下:
下载mem-cli到某个目录,并且调试代码,请执行以下命令
1 | npm install |
关于
这是一个基于node.js的简单的memcache客户端,采用交互式命令行模式运行。
Memcache和Redis同样为基于内存的非关系型数据库,但是和Redis较为齐全的工具相比,Memcache的工具链就有点拿不出手的意思了。Memcache只能通过telnet命令与memcached服务器交互,命令格式如下,
1 | <command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n |
我就执行一个get、set,却让我加如此复杂的参数,不能忍,这就是我的一次操作记录。
你能感受到我输入quit时候的绝望么,下面开始吐槽!!!
- telnet输入的命令居然不能删除或回退,这对于手残党来说,完全无法忍受。
- telnet操作memcache还需要设置很多无需关心的参数
- telnet执行命令后的显示结果很不人性化
作为程序猿,遇到这种无法忍受的问题,就果断自己动手解决了。刚好最近在看node.js,开发交互式命令行程序可以使用node.js原生提供的 REPL 模块,解析命令行参数可以使用 argv 模块,连接memcached服务器,有memcache 模块,万事俱备,开始动手。
特性
暂且支持如下功能:
- get
- set
- keys
- stats
内置命令支持
目前额外支持这两个内置命令:
keys *
– 列出所有memcache的keystats
– 显示memcache服务器的状态数据
源码
假如你想测试代码,请使用本地安装方式,并且使用require
函数引入源码,假如你有test.js
, 请加入如下代码:1
2
3
4
5var MemcacheClient = require('./lib/client');
MemCli = new MemcacheClient();
MemCli.start();
执行测试代码
1 | ▸ test.js |
使用
查看帮助信息
1 | mem-cli --help |
连接远程memcache客户端
1 | mem-cli -h [remote host] -p [port] |
获取mem-cli
的版本
1 | mem-cli -v |
mem-cli
对memcache的一些操作
1 | mem-cli -h 192.168.1.73 -p 12002 |
退出命令行
1 | mem-cli -h 192.168.1.73 -p 12002 |
尾声
发起这个项目的原因,在 关于 章节里有描述,这个简单的客户端程序花了3天时间写完,现在已经发布到 npm 和 github ,欢迎安装使用和提交issues ,目前版本是0.04。
这是我的第一个开源项目,在开发这个项目的过程中,学到了很多东西,比如npm如何开发并且发布一个包,如何发布代码到github,这里吐槽一下npm的包管理,随便提交一点代码就要修改一下版本号,感觉不是很人性化。
未来支持特性
这个项目未来会继续优化完善,做到类似redis-cli,未来加入的特性如下:
- 加入反序列化解析器
- 加入更多服务器状态信息,如缓存命中率等
反序列化解析器是为了将存储的数据反序列化,比如PHP写入memcache,使用的序列化方式是PHP内置函数serialize
,那么就需要使用js实现反序列化函数,将数据解析出来。