浅谈MemCahe
MemCahe
首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。
接下来介绍下在windows下的memcache的安装与使用:
第一步:下载memcache安装包
链接:下载mamcache安装包 密码: kwt5
第二步:安装memcache服务:
1 开启memcache服务:首先查看自己计算机所开启的服务----在开始菜单查询里输入命令:services.msc
接下来在dos窗口安装memcache服务-----在开始菜单查询里输入cmd指令,打开dos黑窗口
接下来输入指令来开启memcache服务
那么这个时候刷新下服务,就会出现memcached server
谈到这个地方,有些人不明白memcache 与memcached的区别,这里简要说下,memecache是项目名,叫分布式缓存系统,而memcached.exe是一个程序名,只是项目中的一个启动服务的程序。
接下来通过telnet命令,来连接服务器的memcache端口,往memcache里面添加数据,进行一些简单操作。
telnet:是TCP/IP协议族中的一员,简单说就是可以通过telnet指令来连接指定的服务器(可以是多台服务器),对服务器中的内容进行操作。
首先开启telnet本机服务----打开控制面板,选择程序和功能,打开或关闭windows功能,在Telnet客户端上打钩。
下一步:通过telnet命令连接本地服务器的memcache端口
连接成功后的结果:
如果连接不成功,请检查下telnet客户端功能有没有添加,memcache服务状态是否是已启动。
接下来开始玩一下memcache。
首先输入stats,返回统计信息例如 PID(进程号)、版本号、连接数等
这里面的参数参考:http://www.runoob.com/memcached/memcached-stats.html
接下来就是一些简单的指令操作,具体的学习参考上面的链接。
学习到这里,我相信基本的memcache使用应该会了。接下来写了一个demo,也比较简单。
首先需要下载memcache,net库 下载地址:链接: 下载memcache,net库密码: fsfw
引用三个dll文件:ICSharpCode.SharpZipLib.dll log4net.dll Memcached.ClientLibrary.dll
namespace MemCacheDemo
{
class Program
{
static void Main(string[] args)
{
string[] servers = { "127.0.0.1:11211" };// 127.0.0.1:服务器地址,11211:memcache端口号
# region 初始化池 SockIOPool pool = SockIOPool.GetInstance();
//设置服务器列表
pool.SetServers(servers);
//各服务器之间负载均衡的设置比例
pool.SetWeights(new int[] { });
//初始化时创建连接数
pool.InitConnections = ;
//最小连接数
pool.MinConnections = ;
//最大连接数
pool.MaxConnections = ;
//连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
pool.MaxIdle = * * * ;
//socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态
pool.SocketConnectTimeout = ;
//通讯的超时时间,下面设置为3秒(单位ms),.Net版本没有实现
pool.SocketTimeout = * ;
//维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
pool.MaintenanceSleep = ;
//设置SocktIO池的故障标志
pool.Failover = true;
//是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
pool.Nagle = false;
//socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。
pool.MaxBusy = * ;
pool.Initialize();
#endregion #region 客户端实例
MemcachedClient Cache = new MemcachedClient();
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
Cache.EnableCompression = false;
//压缩设置,超过指定大小的都压缩
//cache.CompressionThreshold = 1024 * 1024;
Cache.Add("myKey", "");//向memcache缓存里添加数据
#endregion
pool.Shutdown();//关闭连接池 }
}
}
对上面的代码解释下:首先设置连接的服务器,及memcache端口号 接下来初始化sock线程池 实例化memcache客户端,添加键值。
运行后,可以在dos窗口中获取myKey值。
看到这里,相信读者有了一点感觉了。
接下来,谈谈为什么使用memcache能够提高用户的访问速度?
假设有10万个用户请求网站,那么后台程序会到数据库里查询用户数据,将查询到的数据放入到memcache中,这里会为每个用户随机产生一个guid用来表示key,登录信息的数据放在value中,然后根据guid通过hash算法产生特定的哈希值用来将用户信息按照一定的规则存储在memcache中。这样子,当用户访问主页的时候,首先会到memcache缓存里查询是否有登录信息,而不需要到数据库里查询。同时因为每个用户信息都按照一定的规则存放在缓存中,所以到缓存里查询数据时,会节省时间。
写下这篇文章主要记录自己学习的点点滴滴,当然这篇博客里也参考了博友们的文章和一些视频资料。如果读者有什么不明白地方,或者觉得文章有错误,欢迎指正,谢谢。
浅谈MemCahe的更多相关文章
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- Linux特殊符号浅谈
Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...
- 浅谈Angular的 $q, defer, promise
浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00 博客园-原创精华区 原文 http://www.cnblogs.com/big-snow/ ...
随机推荐
- 主键生成策略sequence
http://blog.csdn.net/shanhuhau/article/details/24978253 表示:如果不写序列名,会走默认的序列 若写,则seq_表名_属性名
- qhfl-7 结算中心
结算中心,即从购物车前往支付前的确认页面,这里要开始选择优惠券了 """ 前端传过来数据 course_list 课程列表 redis 中将要存放的结算数据 { sett ...
- ACM_贪心法_queue_Fence Repair
题目如下,来源POJ Farmer John wants to repair a small length of the fence around the pasture. He measures t ...
- Junit 命令行测试 报错:Could not find class 理解及解决方法
一.报错 : 『Could not find class』 下面给出三个示例比较,其中只有第一个是正确的. 1. MyComputer:bin marikobayashi$ java -cp .:./ ...
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...
- MFC 不同窗体之间变量调用
应用场景: (1)主对话框包含一个Tab控件,Tab控件用来切换显示若干子对话框,子对话框类的成员需要互相访问. (2)或者程序中包含多个类,各类之间需要互相访问. 方法1-定义指针成员变量: 详情参 ...
- Javascript高级编程学习笔记(13)—— 引用类型(2)Array类型
除了Object类型之外ECMA中最常用的引用类型可能就是Array类型了 并且ECMA中的数组类型和其他大多数编程语言的数组类型存在着很大的区别 今天就介绍一下JS中的Array的特别之处 区别 1 ...
- SpringCloud-Eurake坑
首先遇到的问题 Eurake单台部署,很容易出现自我保护,发现web管理页面一大串红字警告 这个问题通过关闭自我保护机制可以简单解决..一般集群部署不会出现 eureka: server: renew ...
- IDEA 图标介绍。 缓存和索引介绍、清理方法和Debug使用
一.图标 二.缓存和索引 IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找.代码提示等操作的速(上图中的图标能这样显示也是靠索引).某些特殊条件下,IntelliJ I ...
- ASP.NET MVC 异常Exception拦截
一.前言 由于客户端的环境不一致,有可能会造成我们预计不到的异常错误,所以在项目中,友好的异常信息提示,是非常重要的.在asp.net mvc中实现异常属性拦截也非常简单,只需要继承另一个类(Syst ...