Memcached缓存技术(二):存储命令:set;add;replace;append;prepend;cas

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值