.Net 内存缓存项目 SharpCached源码

 补充:2008年7月30日12:50:15

 测试代码:

 

Code

 

 

测试结果:

时钟支持高精度:True
时钟最小单位:188778184698140
每秒计时频率:2327540000


获取键值数运行时间:0
keys count :49523


获取占用内存运行时间:0
Memory :241.000M


写入自定义对象运行时间:4


写入DataTable对象运行时间:4


写入字符串运行时间:3


写入短字符串运行时间:3


读取自定义对象运行时间:0 存在:True


读取DataTable运行时间:1 存在:True


读取字符串运行时间:0 存在:True


读取短字符串运行时间:0 存在:True


读取不存在键值运行时间:0 存在:False


移除上述键值运行时间:28


 

 

结果基本很稳定。测试平台:Window 2003  ,2.33G 8核CPU,4G内存。本机测试,没有放到局域网测试。

 

 

/*  SharpCached 是一个内存缓存工具
 *  by yurow @ http://birdshover.cnblogs.com
 *  2008-7-29 created

 */

 

 SharpCached V0.6

 

 

下载地址:https://files.cnblogs.com/birdshover/SharpCached.zip

 

有兴趣的朋友,可以和我一起研究,呵呵,不完善的地方期望大家能不吝指正。 本来想在CodePlex开个开源项目的,但是人太笨,用的SvnBridge一直传不上去,郁闷得不弄了,呵呵。

 

 SharpCached是完全用C#开发的,基于.Net Framework 2.0运行的内存缓存服务,Visual Studio 2008项目。

 

一、实现功能

实现IIS进程外缓存功能,通过Remoting调用。

实现了未命中或者近段时间内未命中结果过期。

实现了限制使用最大内存(程序检测出的和Windows任务管理器不一致,任务管理器中看到使用内存要多一些。)

 

二、使用服务

编译后文件清单

SharpCached.exe

ISharpCarrier.dll

SharpCached.exe.config


SharpCached.exe.config配置文件说明


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

    <appSettings>

         <!-- 服务端口 -->

        <add key="Server_Port" value="8000"/>

         <!-- 最大使用内存,单位M-->

        <add key="Max_Memory" value="1024"/>

         <!-- 存取Key初始数值 -->

        <add key="Keys_InitCount" value="5000"/>

         <!-- 未命中过期-->

        <add key="TimeOut" value="10"/>

          <!-- 服务名-->

        <add key="Server_Name" value="SharpCached"/>
    </appSettings>

</configuration>

 

注册:sc create "SharpCached" type= interact type= own start= auto binPath= "%cd%"SharpCached.exe"

启动:net start "SharpCached"


三、调用方法

 

客户端配置文件:

如果是Windows应用程序,把

    <appSettings>

         <!-- 服务器地址 -->

        <add key="SharpServer" value="tcp://localhost:8000/SharpCached"/>

         <!-- 连接超时时间 -->

        <add key="TimeOut" value="1000"/>

    </appSettings>

代码加入app.setting中


如果是Web程序,把以上代码加入Web.Config中。


项目引用SharpClient项目和ISharpCarrier项目


示例代码:

DataTable GetTable()

{

SharpCachedAPI api = new SharpCachedAPI();

string key = "key_123";

if (api.IsError)
{
       return new DataTable();
 }
else
{
      if (api.Exist(key))

{
       return SharpCachedAPI.Deserialize<DataTable>(api.Get(key));
}

      else

{
       DataTable dt = new DataTable();
       string value = SharpCachedAPI.Serialize<DataTable>(dt);
       api.Set(key, value);
       return dt;
}

}





 

 

posted @ 2008-07-29 23:28  Birdshover  阅读(3032)  评论(21编辑  收藏  举报