memcached链接
可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务。
语法:telnet HOST PORT
命令中的 HOST 和 PORT 为运行 Memcached 服务的 IP 和 端口。
memcached命令
1.Memcached 存储命令
1.Memcached set 命令
2.Memcached add 命令
3.Memcached replace 命令
4.Memcached append 命令
5.Memcached prepend 命令
6.Memcached CAS 命令
2.Memcached 查找命令
1.Memcached get 命令
2.Memcached gets 命令
3.Memcached delete 命令
4.Memcached incr/decr 命令
3.Memcached 统计命令
1.Memcached stats 命令
2.Memcached stats items 命令
3.Memcached stats slabs 命令
4.Memcached stats sizes 命令
5.Memcached flush_all 命令
Memcached set 命令
1.Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。
2.语法:
set 命令的基本语法格式如下:
set key flags exptime bytes [noreply]
value
参数说明如下:
1.key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.noreply(可选): 该参数告知服务器不需要返回数据
6.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据设置成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.ERROR:在保存失败后输出。
eg:set命令
1.set foo 0 0 3
设置foo变量 0(可以存储键值对的额外信息,例如:有效信息1,无效信息0) 0(保存键值对的时间长度单位是s 0表示永远,重启memcached服务可以清空数据) 3 (要存放的foo 数据的长度)
2.bar
输入字符存储 STORED (设置成功)
3.get foo
获取服务器设置的foo
4.VALUE foo 0 3
bar
显示
5.END
Memcached add 命令
1.Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。
如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。
2.语法:
add 命令的基本语法格式如下:
add key flags exptime bytes [noreply]
value
参数说明如下:
1.0key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.noreply(可选): 该参数告知服务器不需要返回数据
6.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据添加成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.NOT_STORED :在保存失败后输出。
eg:add命令
add new_key 0 900 9(自己输入)
memcached(自己输入)
STORED
get new_key(自己输入)
VALUE new_key 0 9
memcached
END
add new_key 0 900 9(自己输入)
aaaaaaaaa(自己输入)
NOT_STORED
Memcached replace 命令
1.Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。
如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED。
2.语法:
replace 命令的基本语法格式如下:
replace key flags exptime bytes [noreply]
value
参数说明如下:
1.key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.noreply(可选): 该参数告知服务器不需要返回数据
6.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据添加成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.NOT_STORED:执行替换失败后输出。
eg:replace命令
add mykey 0 900 9
memcached
STORED
get mykey
VALUE mykey 0 9
memcached
END
replace mykey 0 900 10
memcached2
STORED
get myket
END
get mykey
VALUE mykey 0 10
memcached2
END
2.对于不存在的key-value替换
replace foof 0 900 1
a
NOT_STORED
set也可以修改replace针对于已经存在的key-value替换
Memcached append 命令
1.Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。
2.语法:
append 命令的基本语法格式如下:
append key flags exptime bytes [noreply]
value
参数说明如下:
1.key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.noreply(可选): 该参数告知服务器不需要返回数据
6.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据添加成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.NOT_STORED:该键在 Memcached 上不存在。
3.CLIENT_ERROR:执行错误。
eg:append命令
set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
append runoob 0 900 1 (追加的字符数)
a
STORED
get runoob
VALUE runoob 0 10
memcacheda
END
开启多线程时 所有线程都会调用或修改保存内存中的数据,当A线程操作的时候,B线程任然可以进行修改,并没有进行加锁,按照最新版本更新数据(类似于幻读)
Memcached prepend 命令
1.Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。
2.语法:
prepend 命令的基本语法格式如下:
prepend key flags exptime bytes [noreply]
value
参数说明如下:
1.key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.noreply(可选): 该参数告知服务器不需要返回数据
6.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据添加成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.NOT_STORED:该键在 Memcached 上不存在。
3.CLIENT_ERROR:执行错误。
eg:prepend命令
set abc 0 900 9
memcached
STORED
get abc
VALUE abc 0 9
memcached
END
prepend abc 0 900 3
123
STORED
get abc
VALUE abc 0 12
123memcached
END
Memcached CAS 命令
1.Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作
它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。
检查是通过cas_token参数进行的, 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值。
2.语法:
CAS 命令的基本语法格式如下:
cas key flags exptime bytes unique_cas_token [noreply]
value
参数说明如下:
1.key:键值 key-value 结构中的 key,用于查找缓存值。
2.flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
3.exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
4.bytes:在缓存中存储的字节数
5.unique_cas_token通过 gets 命令获取的一个唯一的64位值。
6.noreply(可选): 该参数告知服务器不需要返回数据
7.value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
3.输出
如果数据添加成功,则输出:
STORED
输出信息说明:
1.STORED:保存成功后输出。
2.ERROR:保存出错或语法错误。
3.EXISTS:在最后一次取值后另外一个用户也在更新该数据。
4.NOT_FOUND:Memcached 服务上不存在该键值。
eg:cas命令
set tp 0 900 9
memcached
STORED
gets(之后章节涉及) tp
VALUE tp 0 9 15(代表token令牌)
memcached
END
cas tp 0 900 1 15
a
STORED
gets tp
VALUE tp 0 1 16(主动修改之后会自动更新令牌编号)
a
END
cas命令可以防止其他线程的操作修改
参考:https://www.runoob.com/memcached/memcached-set-data.html