ASP.NET使用Memcached
一、安装Memcached及Memcached配置和状态查询
要想使用Memcached做缓存首先需要安装Memcached服务,安装方法如下:
- memcached.exe下载
- 保存至相应路径
- 打开cmd命令行
- 输入memcached.exe保存的所在路径 –d install 回车
- 打开控制面板的程序与功能选项
- 打开和关闭windows功能,选择telnet客户端和服务端
- 在cmd命令行中输入telnet 127.0.0.1 11211
- 获得以下相关memcaced运行信息
- 打开系统的管理工具,查看服务
- 找到Memcached Server服务
- 运行框中输入regedit,打开注册表
- 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
- 找到ImagePath项,值为"d:\memcached\memcached.exe" -d runservice,在后面加上-l 127.0.0.1 -m 3000 -c 2048
- 已经将最大内存修改成3000
- 在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数量
- 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端口号
使用注册表修改端口号:
- 17.
在项目中引入Enyim.Caching.dll文件,Enyim.Caching.dll会读取项目下Config文件夹下的Memcached.config文件
程序中引入
using Enyim.Caching;
using
Enyim.Caching.Memcached;
- 18.
获取缓存客户端实例
MemcachedClient mc = MemcachedClient.CacheClient
mc.FlushAll() 清理缓存
mc.KeyExists(key.ToLower())
判断key是否存在
mc.Get<Value>(key.ToLower())
根据key获取value
- 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的更多相关文章
- ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...
- ASP.NET版Memcached监控工具(转载)
在上一篇文章<使用Memcached提高.NET应用程序的性能>中周公讲述如何在.NET中使用Memcached来提高.NET应用程序的性 能.在实际的使用中有可能出现Memcached因 ...
- ASP.NET中MEMCACHED
一,准备 你需要有一下软件: VS.NET(05/08) SQLSERVER memcached服务器端以及客户端类库(开源软件,下载即可)其中,客户 ...
- ASP.NET使用Memcached高缓存实例的初级介绍
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.Memcached ...
- 在windows10上创建ASP.NET mvc5+Memcached服务
感谢两位两位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/running ...
- 高性能的分布式内存对象缓存系统Memcached
Memcached概述 什么是Memcached? 先看看下面几个概念: Memory:内存存储,不言而喻,速度快,对于内存的要求高,不指出的话所缓存的内容非持久化.对于CPU要求很低,所以常常采 ...
- Memcached安装配置最大使用内存
Memcached安装配置最大使用内存 项目做了很多,虽然用memcached的项目也有很多.但是没有太关注安装memcached细节问题 最近做了一个项目,把很多东西都放到memcached缓存中, ...
- 在ASP.Net MVC 中如何实现跨越Session的分布式TempData
Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也 ...
- 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData
1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也都知道TempData是用Session来实现的,既 ...
随机推荐
- css基于绝对定位的垂直水平居中技术
翻译:http://blog.csdn.net/freshlover/article/details/11579669 原文:http://coding.smashingmagazine.com/20 ...
- java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
windows: package cn.net.comsys.helper.system.info; import java.io.BufferedReader; import java.io.F ...
- 高斯混合模型(GMM)
复习: 1.概率密度函数,密度函数,概率分布函数和累计分布函数 概率密度函数一般以大写“PDF”(Probability Density Function),也称概率分布函数,有的时候又简称概率分布函 ...
- 改进你的WordPress导航菜单 —— 输出标题描述
在WordPress 3.0中增加了自定义菜单功能,如果你在WordPress后台(外观>菜单)创建一个菜单,你可以在主题中使用wp_nav_menu()函数来显示这些菜单.但是像图中这种带描述 ...
- JDI tutorial (trace example)
Components Debugger Interfaces / |--------------| / | VM | debuggee ----( |--------------| <----- ...
- Linux下忘记MySQL的root密码的解决方法
恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也 ...
- redis该如何分区-译文(原创)
写在最前,最近一直在研究redis的使用,包括redis应用场景.性能优化.可行性.这是看到redis官网中一个链接,主要是讲解redis数据分区的,既然是官方推荐的,那我就翻译一下,与大家共享. P ...
- Java多态与反射
多态通过分离做什么和怎么做,从另一个角度将接口与实现分离开来:通过多态来消除类型之间的耦合关系,在Java中,多态也叫动态绑定,后期绑定或运行时绑定,那么什么是方法绑定? 方法调用绑定: 将一个方法与 ...
- 多重网格法简介(Multi Grid)
原文链接 多重网格法是一种用于求解方程组的方法,可用于插值.解微分方程等. 从专业角度讲多重网格法实际上是一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与 ...
- liunx中计算机壳层
什么是shell?shell是用C语言编写的程序.既是一种命令语言,又是一种程序设计语言.shell是一种应用程序,这个应用程序提供一个界面,用户通过这个界面访问系统内核的服务.在计算机科学中,She ...