NHibernate中使用memcache二级缓存
一、Windows下安装Memcache
1、 下载 http://jehiah.cz/projects/memcached-win32/ memcached 1.2.1 for Win32 binaries ;
2、 解压 到 D:/memcached;
3、 安装 D:/memcached /memcached.exe -d install
4、 启动 D:/memcached /memcached.exe -d start
可以在进程中看到memcached.exe
5、其他常用命令
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
二、在NHibernate项目中配置Memcache
1、下载NHibernate第三方二级缓存提供程序 NHibernate.Caches.MemCache 。
http://sourceforge.net/projects/nhcontrib/files/ NHibernate.Caches/
2、在应用程序配置文件(app.config or web.config)中添加:
< configSections >
< section name ="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler,NHibernate.Caches.MemCache" />
</ configSections >
< memcache >
< memcached host ="127.0.0.1" port ="11211" weight ="2" />
</ memcache >
3、 在hibernate.cfg.xml中添加缓存相关配置。
1) 设置二级缓存提供程序
< property name ="cache.provider_class" >NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache </ property >
2) 启用二级缓存
< property name ="cache.use_second_level_cache" > true </ property >
3) 启用查询缓存
< property name ="cache.use_query_cache" > true </ property >
4)设置过期时间(秒)
< property name ="cache.default_expiration" > 300 </ property >
5) 设置缓存的前缀名称
< property name ="cache.region_prefix" > Demo </ property >
6) 配置缓存实体
< mapping assembly ="Lee.Model" />
< class-cache class ="Lee.Model.UserInfo,Lee.Model" usage ="read-write" />
hibernate.cfg.xml文件
<? xml version="1.0" encoding="utf-8" ?>
< hibernate-configuration xmlns ='urn:nhibernate-configuration-2.2' >
< session-factory >
< property name ="show_sql" > true </ property >
< property name ="dialect" > NHibernate.Dialect.MsSql2005Dialect </ property >
< property name ="connection.driver_class" > NHibernate.Driver.SqlClientDriver </ property >
< property name ="proxyfactory.factory_class" >NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </ property >
< property name ="connection.connection_string_name" > SQLConnection </ property >
< property name ="cache.provider_class" >NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache </ property >
< property name ="cache.use_second_level_cache" > true </ property >
< property name ="cache.use_query_cache" > true </ property >
< property name ="cache.default_expiration" > 300 </ property >
< property name ="cache.region_prefix" > Demo </ property >
< mapping assembly ="Lee.Model" />
< class-cache class ="Lee.Model.UserInfo,Lee.Model" usage ="read-write" />
</ session-factory >
</ hibernate-configuration >
4、测试代码
请先下载以前用到的项目http://files.cnblogs.com/tenghoo/WCFDemo.rar,在项目中修改。
1)在Lee.DAL. UserInfoDAL中添加以下方法:
public UserInfo getUserInfo()
{
UserInfo u = new UserInfo();
using (_session = _sessionfactory.Session)
{
u = _session.Get < UserInfo > ( 1 );
}
return u;
}
2)调用代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Lee.Model;
using Lee.DAL;
namespace Lee.ConsoleTest
{
class Program
{
static void Main( string [] args)
{
Console.WriteLine( " -第一次读- " );
UserInfoDAL dal = new UserInfoDAL();
UserInfo u = dal.getUserInfo();
Console.WriteLine();
Console.WriteLine( " ID={0},Name={1} " , u.Id, u.Name);
Console.WriteLine( " -第二次读- " );
Console.WriteLine();
UserInfoDAL dal2 = new UserInfoDAL();
UserInfo u2 = dal2.getUserInfo();
Console.WriteLine( " ID={0},Name={1} " , u2.Id, u2.Name);
}
}
}
5、开始测试
不启动memcache,启动项目
启动memcache ,启动项目
保持memcache启动状态,重启项目
三、扩展阅读
memcache服务器安全问题
http://www.soaspx.com/dotnet/service/service_20091113_1576.html
最新文章
- 如何在Flex标签中写事件函数
- c# 中基类变量指向派生类对象的实例化
- for 循环的关键字 break和continue
- linux pep8 检查工具
- vmware安装centos时遇到无法创建新虚拟机: 不具备执行此操作的权限。
- 【JavaScript学习笔记】鼠标样式
- HDU 1150 Machine Schedule (二分图最小点覆盖)
- vim配置vimrc详解
- IntelliJ IDEA 出现Unable to execute DX 问题
- RPC框架基本原理(三):调用链路分析
- js中的事件委托详解
- useradd 命令详解
- maven常用命令介绍
- 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传
- 49个Spring经典面试题总结,附带答案,赶紧收藏
- 剖析 Linux hypervisor
- 【BZOJ】1187: [HNOI2007]神奇游乐园
- Integer 原码解读
- 使用 IntraWeb (1) - 先测试如何部署为 Asp.Net 的应用
- android2.1中<;shape>;圆角的bug
热门文章
- TempDB 中表变量和局部临时表的对比
- Hadoop 它们的定义Writable NullpointerException
- 基于PaaS人事部门间平台多重身份的技术解决方案
- iOS6和iOS7适应代码(6) —— NSLocalizedString
- Matlab与.NET基于类型安全的接口混合编程入门
- Android在第三方应用程序系统应用尽早开始,杀死自己主动的第三方应用程序,以重新启动
- thinkphp学习笔记9—自动加载
- Codeforces 135A-Replacement(思维)
- C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)
- JS中call、apply的用法说明