1、Memcached是什么

  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

2、Memcached集群原理

  Memcache是通过客户端驱动实现集群。Redis、MongoDb是通过服务器端实现集群初始化驱动的时候开业给定一个集合:memcache服务器所在的机器ip和端口。

  Memcache 在添加一个键值对时,

  第一步:把key做一个哈希运算

  第二步:根据哈希值对服务器个数取余。根据取余结果,把数据放到对应机器上去

  Memcache 在获取一个键值对时,

  第一步:根据key做一个哈希运算

  第二步:根据哈希值对服务器个数取余。根据取余结果,从相应服务器上取数据

3、Memcached的优缺点

  (1)       不能作为持久化存储

  (2)       存储数据有限制:最大1M

  (3)       Memcache存储数据只能key-value

  (4)       集群数据没有复制和同步机制

  (5)       内存回收不及时。LRU:未使用内存》过期内存》最近最少使用内存,是一个惰性删除

4、Memcached的安装与卸载

  推荐这篇文章,比较详细的介绍了安装与卸载

  http://blog.csdn.net/zhaotengfei36520/article/details/41315329

  安装成功运行后,可以在服务那里看到Memcached服务正在运行

5、C#中Memcached的使用

  通过Nuget安装 EnyimMemcached

  新建一个MemcacheHelper类

  

public class MemcacheHelper
{
public MemcachedClient mc = MemCached.getInstance();
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <returns></returns>
public bool AddCache(string key, object value)
{
return mc.Store(StoreMode.Add, key, value);
}
/// <summary>
/// 添加缓存,并指定过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="exp"></param>
/// <returns></returns>
public bool AddCache(string key, object value, DateTime exp)
{
return mc.Store(Enyim.Caching.Memcached.StoreMode.Add, key, value, exp);
}
/// <summary>
/// 修改缓存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool SetCache(string key, object value)
{
return mc.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value);
}
/// <summary>
/// 修改缓存并指定过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="exp"></param>
/// <returns></returns>
public bool SetCache(string key, object value, DateTime exp)
{
return mc.Store(Enyim.Caching.Memcached.StoreMode.Set, key, value, exp);
}
/// <summary>
/// 通过键获取缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public object GetCache(string key)
{
return mc.Get(key);
}
public T GetCache<T>(string key)
{
return mc.Get<T>(key);
}
/// <summary>
/// 通过键删除缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public bool DeleteCache(string key)
{
return mc.Remove(key);
}
}

  通过单例模式获取Memcached客户端对象

public sealed class MemCached
{
private static MemcachedClient MemClient { get; set; }
static readonly object padlock = new object();
//线程安全的单例模式
public static MemcachedClient getInstance()
{
if (MemClient == null)
{
lock (padlock)
{
if (MemClient == null)
{
MemClientInit();
}
}
}
return MemClient;
} private static void MemClientInit()
{
string serverList = "127.0.0.1:11211";
//初始化缓存
MemcachedClientConfiguration memConfig = new MemcachedClientConfiguration();
memConfig.AddServer(serverList);
memConfig.Protocol = MemcachedProtocol.Binary;
//下面请根据实例的最大连接数进行设置
memConfig.SocketPool.MinPoolSize = ;
memConfig.SocketPool.MaxPoolSize = ;
MemClient = new MemcachedClient(memConfig);
}
}

  最后测试代码

    

  

Memcached在windows下的基本使用的更多相关文章

  1. memcached 在windows下安装及启动

    memcached 在windows下安装及启动   Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数, ...

  2. (转)Memcached 在windows下的java使用

    Memcached 在windows下的java使用   研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...

  3. Memcached在windows下安装与使用

    建议:windows系统下仅为测试所有,生产环境下服务端应使用Linux系统. 本文最后更新于:2014-08-03 18:24 原文:http://www.yaosansi.com/post/mem ...

  4. memcached在Windows下的安装

    memcached简介详情请谷歌.这里介绍如何在windows下安装. 1.下载     下载地址:http://download.csdn.net/detail/u010562988/9456109 ...

  5. memcached在windows下多实例并存

    文章来源:http://blog.csdn.net/xingxing513234072/article/details/39343999 memcached.exe的-d install命令安装时其他 ...

  6. memcached在windows下的安装与命令使用方法

    先下载memcached for win32 下载地址1:http://filemarkets.com/fs/8tdo6ndg41d919599/ 下载地址2:http://www.400gb.com ...

  7. Memcached在windows下的安装和使用

    1.下载memcached安装文件及c#开发所需的dll 2.解压<memcached-1.2.6-win32-bin.zip>,并cmd,定位到解压目录. 3.安装服务:输入命令 mem ...

  8. Memcached在Windows下的配置和使用

    Memcached学习笔记---- 安装和配置 首先,下载Memcached相关文件. 打开控制台,进入Memcached主程序目录,输入: memcached.exe -d install //安装 ...

  9. Memcached在Windows下的配置和使用(转)

    出处:http://www.cnblogs.com/sunniest/p/4154209.html Memcached学习笔记---- 安装和配置 首先,下载Memcached相关文件. 打开控制台, ...

随机推荐

  1. python中的JSON(1)

    很多程序都要求用户输入某种信息, 例如:   让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中, 用户关闭程序时,我们几乎总要保存他们提供的信息: 如何保存-- ...

  2. 写给Android App开发人员看的Android底层知识(6)

    (十一)BroadcastReceiver BroadcastReceiver,也就是广播,简称Receiver. 很多App开发人员表示,从来没用过Receiver.其实吧,对于音乐播放类App,用 ...

  3. Scheme 中的 pair 和 list 简述

    pair (cons 1 2) > (1 . 2) 系统返回(1 . 2).cons 操作给两个地址分配了内存空间,并把存放指向 1 的地址放在一个空间,把存放指向2的地址放在另一个空间.存放指 ...

  4. Xmpp学习之Smack发送消息JID变乱码

    Xmpp学习之Smack发送消息JID变乱码 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6947723 ...

  5. 在附件管理模块中增加对FTP 上传和预览的支持

    在之前介绍的附件管理模块里面<Winform开发框架之通用附件管理模块>以及<Winform开发框架之附件管理应用>,介绍了附件的管理功能,通过对数据库记录的处理和文件的管理, ...

  6. 用java来实现验证码功能(本帖为转载贴),作为个人学习收藏用

    一.关于为何使用验证的解释 在目前的网页的登录.注册中经常会见到各种验证码.其目的便是为了:防止暴力破解  .因为只要CPU性能较强,便可以在慢慢尝试密码的过程中来破解用户账号,因而导致的结果是用户信 ...

  7. Akka(7): FSM:通过状态变化来转换运算行为

    在上篇讨论里我们提到了become/unbecome.由于它们本质上是堆栈操作,所以只能在较少的状态切换下才能保证堆栈操作的协调及维持程序的清晰逻辑.对于比较复杂的程序流程,Akka提供了FSM:一种 ...

  8. C#简单构架之EF进行读写分离+多数据库(Mysql/SqlService)

    最近因为项目需要,研究了下EF的读写分离,所以做了一个demo进行测试,下面是项目的结构 表现层view 主要提供Web.WebApi等表现层的解决方案 公共层public 主要提供项目公共类库,数据 ...

  9. 初学vitmio,vitmio的环境配置及遇到的坑

    1 到官网或者github下载vitamio 官网地址:https://www.vitamio.org/ github地址:https://github.com/yixia/VitamioBundle ...

  10. Android 图片加载框架Glide4.0源码完全解析(二)

    写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...