一、安装MemcachedMemcached配置和状态查询

要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:

  1. memcached.exe下载
  2. 保存至相应路径
  3. 打开cmd命令行
  4. 输入memcached.exe保存的所在路径 –d install 回车
  5. 打开控制面板的程序与功能选项
  6. 打开和关闭windows功能,选择telnet客户端和服务端
  7. 在cmd命令行中输入telnet 127.0.0.1 11211
  8. 获得以下相关memcaced运行信息
  1. 打开系统的管理工具,查看服务
  2. 找到Memcached Server服务
  3. 运行框中输入regedit,打开注册表
  4. 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
  5. 找到ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048
  6. 已经将最大内存修改成3000
  7. 在cmd命令行输入telnet 127.0.0.1 11211

返回如下的数据:

time:    1255537291                               服务器当前的unix时间戳
        total_items:   
54                                    
从服务器启动以后存储的items总数量
       
connection_structures:   
19                   
服务器分配的连接构造数
        version:   
1.2.6                                       
memcache版本
        limit_maxbytes:   
67108864                   
分配给memcache的内存大小(字节)
        cmd_get:   
1645                                     
get命令(获取)总请求次数
        evictions:   
0                                           
为获取空闲内存而删除的items数(分配给memcache的空间用满后需
                                                                        
要删除旧的items来得到空间分配给新的items)
        total_connections:   
19                          
从服务器启动以后曾经打开过的连接数
        bytes:   
248723                                     
当前服务器存储items占用的字节数
        threads:   
1                                            
当前线程数
        get_misses:   
82                                     
总未命中次数
        pointer_size:   
32                                   
当前操作系统的指针大小(32位系统一般是32bit)
        bytes_read:   
490982                             
总读取字节数(请求字节数)
        uptime:   
161                                          
服务器已经运行的秒数
        curr_connections:   
18                            
当前打开着的连接数
        pid:   
2816                                              
memcache服务器的进程ID
        bytes_written:   
16517259                    
总发送字节数(结果字节数)
        get_hits:   
1563                                     
总命中次数
        cmd_set:   
54                                         
set命令(保存)总请求次数
        curr_items:   
28                                      
服务器当前存储的items数量

 

  1. 16.    
    web项目下的Config文件夹中添加Memcached.config文件,文件内容如下

<?xml version="1.0" encoding="utf-8" ?>

<memcached-configuration xmlns="urn:memcached-configuration">

<master>

<memcached>

<server address="127.0.0.1" port="11211" />

<socket-pool minPoolSize="10" maxPoolSize="999" connectionTimeout="00:00:10" deadTimeout="00:02:00" />

</memcached>

</master>

</memcached-configuration>

Address主机号

Port端口号

使用注册表修改端口号:

  1. 17.    
    在项目中引入Enyim.Caching.dll文件,Enyim.Caching.dll会读取项目下Config文件夹下的Memcached.config文件

程序中引入

using Enyim.Caching;

using
Enyim.Caching.Memcached;

  1. 18.    
    获取缓存客户端实例

MemcachedClient mc = MemcachedClient.CacheClient

mc.FlushAll() 清理缓存

mc.KeyExists(key.ToLower())
判断key是否存在

mc.Get<Value>(key.ToLower())
根据key获取value

  1. 19.    
    帮助类如下

public class MemcacheDictionary<Value>

{

private MemcachedClient mc = MemcachedClient.CacheClient;

public
MemcacheDictionary()

{

mc.FlushAll();

}

public bool Exists(string key)

{

return
mc.KeyExists(key.ToLower());

}

public Value Get(string key)

{

if (key == null)

return
default(Value);

return
mc.Get<Value>(key.ToLower());

}

public List<Value>
GetAll(string CacheKeyPrefix)

{

List<string>
keys = mc.Get_Keys(CacheKeyPrefix);

List<Value> data = new List<Value>();

var fromcache = mc.Get_Multi(keys);

foreach (string
key in keys)

{

if
(fromcache.ContainsKey(key.ToLower()))

data.Add((Value)fromcache[key.ToLower()]);

}

return data;

}

public List<Value>
GetAll()

{

List<string>
keys = mc.Get_Keys();

List<Value>
data = new List<Value>();

var fromcache = mc.Get_Multi(keys);

foreach (string
key in keys)

{

if
(fromcache.ContainsKey(key.ToLower()))

data.Add((Value)fromcache[key.ToLower()]);

}

return data;

}

public void
Set(string key, Value value)

{

mc.Store(StoreMode.Set,
key.ToLower(), value);

}

public void
Set(string key, Value value, DateTime expiresAt)

{

mc.Store(StoreMode.Set,
key.ToLower(), value, expiresAt);

}

public void
Set(string key, Value value, TimeSpan validFor)

{

mc.Store(StoreMode.Set,
key.ToLower(), value, validFor);

}

public bool
Remove(string key)

{

return mc.Remove(key.ToLower());

}

public void
RemoveAll(string CacheKeyPrefix)

{

List<string>
keys = mc.Get_Keys(CacheKeyPrefix);

keys.ForEach(key => mc.Remove(key.ToLower()));

}

public List<string> GetAllKeyList()

{

return mc.Get_Keys();

}

}

 

ASP.NET使用Memcached的更多相关文章

  1. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...

  2. ASP.NET版Memcached监控工具(转载)

    在上一篇文章<使用Memcached提高.NET应用程序的性能>中周公讲述如何在.NET中使用Memcached来提高.NET应用程序的性 能.在实际的使用中有可能出现Memcached因 ...

  3. ASP.NET中MEMCACHED

    一,准备        你需要有一下软件:       VS.NET(05/08)       SQLSERVER       memcached服务器端以及客户端类库(开源软件,下载即可)其中,客户 ...

  4. ASP.NET使用Memcached高缓存实例的初级介绍

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

  5. 在windows10上创建ASP.NET mvc5+Memcached服务

    感谢两位两位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/running ...

  6. 高性能的分布式内存对象缓存系统Memcached

    Memcached概述   什么是Memcached? 先看看下面几个概念: Memory:内存存储,不言而喻,速度快,对于内存的要求高,不指出的话所缓存的内容非持久化.对于CPU要求很低,所以常常采 ...

  7. Memcached安装配置最大使用内存

    Memcached安装配置最大使用内存 项目做了很多,虽然用memcached的项目也有很多.但是没有太关注安装memcached细节问题 最近做了一个项目,把很多东西都放到memcached缓存中, ...

  8. 在ASP.Net MVC 中如何实现跨越Session的分布式TempData

    Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也 ...

  9. 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData

    1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也都知道TempData是用Session来实现的,既 ...

随机推荐

  1. mysql 函数 GROUP_CONCAT 单元格中最长字符串和excel导出问题

    GROUP_CONCAT 使用方式GROUP_CONCAT ([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) SELECT ...

  2. SDL 1.2.15 issue

    SDL 1.2.15中,对于X11的函数,默认采用动态加载的方式 但相应的X11函数名在SDL中并没有重新命名(SDL2中都添加了前缀X11_) 这样在SDL与其他库混合静态编译链接时,X11的函数就 ...

  3. ngBind ngBindTemplate ngBindHtml

    ng-bind: 只能绑定一个变量 在AngularJS中显示模型中的数据有两种方式: 一种是使用花括号插值的方式: <p>{{titleStr}}</p> 另一种是使用基于属 ...

  4. fping tcping hping nmap nc

    [root@test ~]# fping -a -g 192.168.40.1 192.168.40.240 |nl   #-a   扫描alive主机,-g扫描一个段的ip地址 [root@test ...

  5. Node.js入门笔记(2):全局对象(1)

    以下将以API文档为基础进行分析学习 global对象 这些对象在所有模块里都可用.有些对象不是在全局作用域而是在模块作用域里,这些情况下面文档都会标注出来. __filename--返回当前模块文件 ...

  6. 深入理解javascript原型和闭包(2)——函数和对象的关系

    上文(理解javascript原型和作用域系列(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; co ...

  7. Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

    功能说明 输入文件路径,在浏览器输出文件预览信息,经测试极速(Chrome).IE9.Firefox通过 分类文件及代码说明  DemoFiles 存放可测试文件 Default.aspx  启动页 ...

  8. ZOJ 3699 Dakar Rally

    Dakar Rally Time Limit: 2 Seconds      Memory Limit: 65536 KB Description The Dakar Rally is an annu ...

  9. CSS控制表格(table)样式

    CSS控制表格样式 /* 合并边框重叠部分 */ table{border-collapse:collapse;} /* 单元格边框 */ td{border:1px solid #A7AEB1;}

  10. Shell入门教程:流程控制(4)case 条件判断

    case的语法结构: case 待测项 in 样式串1] 命令区域1 ;; (样式串2) 命令区域2 ;; 样式串3) 命令区域3 ;; *) 命令区域 ;; esac 命令区域,可以是单一指令或多行 ...