简介
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果
安装
这里使用docker安装
docker-compose.yaml
version: "3.7"
services:
memcached:
image: memcached
ports:
- 21211:11211
healthcheck:
test: ["CMD", "echo", "stats", "|", "nc", "127.0.0.1", "11211"]
interval: 20s
timeout: 1s
retries: 20
使用
使用telnet 链接 memcached, 并测试其方法:
luslin@local:~$ telnet 127.0.0.1 21211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
1. 存储命令
a. set
Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。
语法:
set 命令的基本语法格式如下:
set key flags exptime bytes [noreply]
value
- key:键值 key-value 结构中的 key,用于查找缓存值。
- flags:可以包括键值对的整型参数,客户机使用它存储额外信息 。
- exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
- bytes:在缓存中存储的字节数
- noreply(可选): 该参数告知服务器不需要返回数据
- value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
例如:
set l1 0 10000 1
a
STORED # 返回结果
b. add
Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并获得响应 NOT_STORED。
语法:
add 命令的基本语法格式如下:
add key flags exptime bytes [noreply]
value
例如:
add l1 0 10000 2
aa
NOT_STORED # 没有设置成功
add l2 0 10000 1
b
STORED
get l1 l2
VALUE l1 0 1
a
VALUE l2 0 1
b
c. replace
Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
语法:
replace 命令的基本语法格式如下:
replace key flags exptime bytes [noreply]
value
例如:
replace l1 0 10000 2
aa
STORED
replace l3 0 10000 1
a
NOT_STORED
get l1 l3
VALUE l1 0 2
aa
END
d. append
Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。
语法:
append 命令的基本语法格式如下:
append key flags exptime bytes [noreply]
value
例如:
append l1 0 10000 1
b
STORED
append l3 0 10000 1
c
NOT_STORED
get l1 l3
VALUE l1 0 3
aab
END
e. prepend
Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。
语法:
prepend 命令的基本语法格式如下:
prepend key flags exptime bytes [noreply]
value
例如:
prepend l1 0 10000 1
p
STORED
get l1
VALUE l1 0 4
paab
END