欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈MemCahe

程序员文章站 2023-11-21 15:07:52
MemCahe 首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。 接下来介绍下在windows下的memcache的安装与使用: 第一步:下载memcache安装包 链接:下载 ......

MemCahe

首先介绍下memcahce的定义:是一个分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。

接下来介绍下在windows下的memcache的安装与使用:

第一步:下载memcache安装包

链接: 密码: kwt5

第二步:安装memcache服务:

1 开启memcache服务:首先查看自己计算机所开启的服务----在开始菜单查询里输入命令:services.msc 

浅谈MemCahe

接下来在dos窗口安装memcache服务-----在开始菜单查询里输入cmd指令,打开dos黑窗口

 

浅谈MemCahe

接下来输入指令来开启memcache服务

浅谈MemCahe

那么这个时候刷新下服务,就会出现memcached server

谈到这个地方,有些人不明白memcache 与memcached的区别,这里简要说下,memecache是项目名,叫分布式缓存系统,而memcached.exe是一个程序名,只是项目中的一个启动服务的程序。

接下来通过telnet命令,来连接服务器的memcache端口,往memcache里面添加数据,进行一些简单操作。

telnet:是TCP/IP协议族中的一员,简单说就是可以通过telnet指令来连接指定的服务器(可以是多台服务器),对服务器中的内容进行操作。

首先开启telnet本机服务----打开控制面板,选择程序和功能,打开或关闭windows功能,在Telnet客户端上打钩浅谈MemCahe

下一步:通过telnet命令连接本地服务器的memcache端口

浅谈MemCahe

连接成功后的结果:

浅谈MemCahe

如果连接不成功,请检查下telnet客户端功能有没有添加,memcache服务状态是否是已启动。

接下来开始玩一下memcache。

首先输入stats,返回统计信息例如 PID(进程号)、版本号、连接数等

浅谈MemCahe

这里面的参数参考:http://www.runoob.com/memcached/memcached-stats.html

接下来就是一些简单的指令操作,具体的学习参考上面的链接。

浅谈MemCahe

学习到这里,我相信基本的memcache使用应该会了。接下来写了一个demo,也比较简单。

首先需要下载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[] { 1 });
            //初始化时创建连接数
            pool.InitConnections = 3;
            //最小连接数
            pool.MinConnections = 3;
            //最大连接数
            pool.MaxConnections = 5;
            //连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
            pool.MaxIdle = 1000 * 60 * 60 * 6;
            //socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态
            pool.SocketConnectTimeout = 0;
            //通讯的超时时间,下面设置为3秒(单位ms),.Net版本没有实现
            pool.SocketTimeout = 1000 * 3;
            //维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
            pool.MaintenanceSleep = 30;
            //设置SocktIO池的故障标志
            pool.Failover = true;
            //是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
            pool.Nagle = false;
            //socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。
            pool.MaxBusy = 1000 * 10;
            pool.Initialize();
            #endregion

            #region 客户端实例
            MemcachedClient Cache = new MemcachedClient();
            //是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
            Cache.EnableCompression = false;
            //压缩设置,超过指定大小的都压缩 
            //cache.CompressionThreshold = 1024 * 1024;
            Cache.Add("myKey", "523146");//向memcache缓存里添加数据        
            #endregion
            pool.Shutdown();//关闭连接池

        }
    }
}

对上面的代码解释下:首先设置连接的服务器,及memcache端口号   接下来初始化sock线程池    实例化memcache客户端,添加键值。

运行后,可以在dos窗口中获取myKey值。

浅谈MemCahe

看到这里,相信读者有了一点感觉了。

接下来,谈谈为什么使用memcache能够提高用户的访问速度?

假设有10万个用户请求网站,那么后台程序会到数据库里查询用户数据,将查询到的数据放入到memcache中,这里会为每个用户随机产生一个guid用来表示key,登录信息的数据放在value中,然后根据guid通过hash算法产生特定的哈希值用来将用户信息按照一定的规则存储在memcache中。这样子,当用户访问主页的时候,首先会到memcache缓存里查询是否有登录信息,而不需要到数据库里查询。同时因为每个用户信息都按照一定的规则存放在缓存中,所以到缓存里查询数据时,会节省时间。

写下这篇文章主要记录自己学习的点点滴滴,当然这篇博客里也参考了博友们的文章和一些视频资料。如果读者有什么不明白地方,或者觉得文章有错误,欢迎指正,谢谢。