Memcached数据读写方式

作者:Bruce Shi
Memcached存储方式是键值对:
key value
Bruce Chinese
有两种读写命令 :
Telent (非交互式)
nc (交互式)
格式:
set key 0 0 10 \r\n Bruce1982 \r\n
< command name> < key > < flags > < exptime > bytes >\r\n < data block>\r\n
< flag > 是在取回内容时,与数据和发送块一同保存服务器上的任意16位无符号整型(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。
< exptime> 是终止时间。如果为0,该项永不过期(虽然它可能被删除,以便为其他缓存项目腾出位置)。如果非0(Unix时间戳或当前时刻的秒偏移),到达终止时间后,客户端无法再获得这项内容。
< bytes> 是随后的数据区块的字节长度,不包括用于分页的“\r\n”。它可以是0(这时后面跟随一个空的数据区块)。
< data block>\r\n
< data block> 是大段的8位数据,其长度由前面的命令行中的< bytes>指定。
\n 换行且光标移至行首
\r 光标移至行首,但不换行

交互式读写:
[root@cache01 ~]# telnet 172.16.1.21 11211
Trying 172.16.1.21…
Connected to 172.16.1.21.
Escape character is ‘^]’.
set Bruce 0 0 9 # 写入数据,定义key名和属性
Bruce1982 # 写入key value
STORED # 保存成功
set Jimmy 0 0 9 # 写入数据,定义key名和属性
Jimmy22
CLIENT_ERROR bad data chunk
ERROR #保存失败,因为key value jimmy22不是9位字符
get Bruce # 读取数据
VALUE Bruce 0 9 # 返回key属性
Bruce1982 #返回key value
END
set Bruce02 0 5 9 # 这里定义一个key,expire time是5秒
Brcue1099
STORED
get Bruce02 #过5秒去读取数据
END#读取失败

非交互式读写:
[root@cache01 ~]# printf “get Bruce\r\n”|nc 10.0.0.21 11211
VALUE Bruce 0 9
Bruce1982
END
[root@cache01 ~]# printf “set Bruce03 0 0 9\r\nBruce1982\r\n”|nc 10.0.0.21 11211
STORED

安全措施:一般只允许内网用户,如开发人员和运维人员读写Memcache,修改配置文件中,添加监听的内网ip
[root@cache01 ~]# vim /etc/sysconfig/memcached
PORT=“11211”
USER=“memcached”
MAXCONN=“1024”
CACHESIZE=“64”
OPTIONS="-l 172.16.1.21" # 设定监听内网ip,
退出保存 并重启Memcached来更新配置,注意生产环境中不能Memcached,会造成生产事故。
测试:
[root@cache01 ~]# printf “get Bruce03\r\n”|nc 10.0.0.21 11211
Ncat: Connection refused. # 外网用户访问失败
[root@cache01 ~]# printf “get Bruce03\r\n”|nc 172.16.1.21 11211
END

你可能感兴趣的:(Memcached数据读写方式)