《NoSQL》memcached缓存
Posted 风雪幻林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《NoSQL》memcached缓存相关的知识,希望对你有一定的参考价值。
1. memcached的配置:
1.1:安装:
官网未提供 Memcached 的Window平台安装包,只提供源代码,需要自己编译。可以根据这篇文章配置安装。自己的系统平台及需要的版本号:
1.2:连接memcached:
NuGet开发包:
Install-PackageEnyimMemcached
2. memcache缓存:
2.1 参数说明:
memcache只能保存键值对,键值对只能是字符串。memcache存入数据的3种模式:
Set:如果存在则覆盖,不存在则新增(一般使用这个)
Replace:如果存在则覆盖,并且返回 true;如果不存在则不处理,并且返回 false
Add:如果不存在则新增,并且返回 true;如果存在则不处理,并且返回 false
注:ExecuteXXX方法,唯一区别就是返回值信息更详细,在保存类对象,这个类必须是可序列化
2.2 缓存的写入和读取:
2.3 缓存删除key:
Remove(string key) //Key 的长度最高是250 个字符,Value 最长 1M
3. 缓存的并发访问处理:
解决并发访问的cas操作:
using (MemcachedClient client = newMemcachedClient(mcConfig))
{
var cr1=client.GetWithCas("name");
Console.WriteLine("读取出了:"+cr1.Result+"cas:"+cr1.Cas);
Console.WriteLine("按任意键继续");
Console.ReadKey();
var res =client.Cas(StoreMode.Set, "name", "123",cr1.Cas);
if (res.Result){
Console.WriteLine("修改成功"+res.Cas);
} else{
Console.WriteLine("被别人改了" + res.Cas);
}
}
查询的时候查出一个 cas值,在写入的时候带着这个 cas 值,如果发现 cas 值已经变了,则说明已经有别人改过了
4. memcached 集群:
缓存时间设置一样,每隔一段时间就会造成一次数据库的访问高峰期。解决的方法就是缓存时间设置不一样,比如加上一个随机数
memcached集群配置:
在多个服务器上启动多个 Memcached 服务器
客户端决定把数据写入不同的实例//mcConfig.NodeLocatorFactory = new KetamaNodeLocatorFactory()
5. 关于memcached:
建议规则“系统名字_模块名字_业务 Key”设定 Key 的时候,避免冲突:
比如“Shop_Admin_FilterWords”
Increment、Decrement 是用来对计数器进行增减
多线程,可以充分利用 CPU 多核的性能
对象数据只能自己序列化成 json字符串进行存储
Key 最大长度 255 个字符,Value 最长 1M
以上是关于《NoSQL》memcached缓存的主要内容,如果未能解决你的问题,请参考以下文章