关于Memcache缓存
2016-03-22 15:34
816 查看
公司有两个主要使用的网站,对两个数据库有交叉的调用,访问速度该怎么提升就成了网站优化的一个关键因素。
1、 何为Memcache?
是一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问的数据库的网站访问速度提升效果十分显著
2、 Memcache 工作原理?
先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时在 Memcached中存一份缓存。
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的哈希表,它能够用来存储各种格式的的数据,包括视频、图像、文字以及数据库检索的结果等。也就是将数据放在内存中方便使用。
Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
3、 Memcache 简单使用案例:
1、在服务器上安装Memcache的服务,Memcached的下载地址:http://www.newasp.net/soft/63735.html#downloaded/
2、在服务器上安装Memcache:打开命令行提示符,输入安装Memcache的命令,如图:
这是我的安装目录
安装好之后,启动服务,可以在服务中找到Memcache 服务手动点击服务,也可以在cmd命令行提示符中,输入命令:net start "Memcached
server"
3.服务安装好之后,便可以代码了:
写公共类:打开vs-----新建项目-----新建类库(manager),在项目中添加Memcached.ClientLibrary.dll引用(dll文件可以从网上下载),首先在项目添加缓冲池,添加方法,这里不一一介绍,上代码:(先添加了一个新类,类名:ComClass),完成之后点击生成。
在网站中调用Memcache ,这里只写一个简单示例:新建网站(get)---添加引用(刚才新建的项目的名称manager),新建web应用程序
在网站中注意添加引用即可:上代码
前台界面
后台代码展示:
这时做的网站就是用到了Memcache
进行缓存,另外,数据库交互也可以实现,Memcache 中的内容并不是只有一个网站可以使用,可以两个或多个网站同时调用。写法一样。
1、 何为Memcache?
是一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问的数据库的网站访问速度提升效果十分显著
2、 Memcache 工作原理?
先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时在 Memcached中存一份缓存。
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的哈希表,它能够用来存储各种格式的的数据,包括视频、图像、文字以及数据库检索的结果等。也就是将数据放在内存中方便使用。
Memcached是以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
3、 Memcache 简单使用案例:
1、在服务器上安装Memcache的服务,Memcached的下载地址:http://www.newasp.net/soft/63735.html#downloaded/
2、在服务器上安装Memcache:打开命令行提示符,输入安装Memcache的命令,如图:
这是我的安装目录
安装好之后,启动服务,可以在服务中找到Memcache 服务手动点击服务,也可以在cmd命令行提示符中,输入命令:net start "Memcached
server"
3.服务安装好之后,便可以代码了:
写公共类:打开vs-----新建项目-----新建类库(manager),在项目中添加Memcached.ClientLibrary.dll引用(dll文件可以从网上下载),首先在项目添加缓冲池,添加方法,这里不一一介绍,上代码:(先添加了一个新类,类名:ComClass),完成之后点击生成。
public class ComClass { private static readonly MemcachedClient mc = null; public static bool iscache(string key) { return mc.KeyExists(key); } static ComClass() { string[] serverlist = { "192.168.157.74:11211" };//11211是memcached默认的端口号
SockIOPool pool = SockIOPool.GetInstance("ss");//初始化缓冲池 pool.SetServers(serverlist); pool.InitConnections = 3;//初始化链接数 pool.MinConnections = 3;//最少链接数 pool.MaxConnections = 5;//最大链接数 pool.SocketConnectTimeout = 1000;//Socket链接超时时间 pool.SocketTimeout = 3000;//Socket超时时间 pool.MaintenanceSleep = 30;//维护线程休息时间 pool.Failover = true;//失效转移(一种备份操作模式) pool.Nagle = false;//是否用nagle算法启动 pool.Initialize(); //获得客户端实例 mc = new MemcachedClient(); mc.PoolName = "ss"; mc.EnableCompression = false; } public static bool add(string key,object value) { return mc.Add(key, value, 0); } /// <summary> /// 向Memcache存储数据 /// </summary> /// <param name="key"></param> /// <param name="value"></param> public static bool set (string key,object value) { return mc.Set(key, value); } public static bool set(string key,object value,DateTime time) { return mc.Set(key, value, time); }
/// <summary> /// 获取Memcache中的数据 /// </summary> /// <param name="key"></param> /// <returns></returns> public static object get(string key) { return mc.Get(key); } ////删除 public static bool dalete(string key) { if(mc.KeyExists(key)) { return mc.Delete(key); } return false; } }
在网站中调用Memcache ,这里只写一个简单示例:新建网站(get)---添加引用(刚才新建的项目的名称manager),新建web应用程序
在网站中注意添加引用即可:上代码
前台界面
后台代码展示:
using System; using System.Data; using manager; namespace get { public partial class get : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public void getcatch() { Label1.Visible = false; string key = "mm"; object obj = new object(); if(ComClass.iscache(key)) { obj = ComClass.get(key); DataTable u = (obj) as DataTable; if(u!=null&&u.Rows.Count>0) { foreach (DataRow row in u.Rows) { TextBox1.Text = row["姓名"].ToString(); TextBox2.Text = row["说明"].ToString(); } } else { TextBox1.Text = "";//姓名 TextBox2.Text = "";//备注 Label1.Visible = true; } } } //获取缓存 protected void btnget_Click(object sender, EventArgs e) { getcatch(); } //更新缓存 protected void btnupdate_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); DataColumn dtc = new DataColumn("姓名", typeof(string)); dt.Columns.Add(dtc); dtc = new DataColumn("说明", typeof(string)); dt.Columns.Add(dtc); DataRow dr = dt.NewRow(); dr["姓名"] = TextBox3.Text; dr["说明"] = TextBox4.Text; dt.Rows.Add(dr); bool b = ComClass.set("mm", dt, DateTime.Now.AddDays(1)); if(b) { TextBox3.Text = "";//姓名 TextBox4.Text = "";//备注 } } //清除缓存 protected void btnclear_Click(object sender, EventArgs e) { ComClass.dalete("mm"); } } }另外要注意,引用刚才添加的类库,那就一定要注意一旦类库那边有什么改动,这边就需要重新生成。
这时做的网站就是用到了Memcache
进行缓存,另外,数据库交互也可以实现,Memcache 中的内容并不是只有一个网站可以使用,可以两个或多个网站同时调用。写法一样。
相关文章推荐
- tomcat+memcache+nginx实现共享
- 1.4-Memcached基本操作
- 1.3-memcached安装
- 1.2-memcached介绍
- MemCache基础知识介绍
- PHP之Memcache缓存详解
- Memcached 缓存
- Zend Framework实现将session存储在memcache中的方法
- Zend Framework实现将session存储在memcache中的方法
- memcache的用法详解整理
- MySQL内存表、MyISAM表、MemCache实现Session效率比较
- No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()
- Memcached 简单介绍
- Redis与Memcached的区别
- windows下修改memcached服务的端口号
- 分享memcache和memcached安装过程
- linux下为PHP扩展安装memcache模块
- redis、mongodb、memcache比较
- 利用Spring AOP 更新memcached 缓存策略的实现(二)
- 利用Spring AOP 更新memcached 缓存策略的实现(一)