自定义缓存Memcache 以及Cache

*****缓存存储配置项(读缓存和appsetting配直节点的问题 )*****

MemCache经常用于数据不用经常改动的数据 不用每次都去数据库中读取,可以防止在系统的缓存中,缓存在内存中读取速度快,但是memcache(是可以分布的缓存)没有保存机制,服务器挂掉,memcache丢失

系统的配置节放在了appsettings配置节下  <add key=”mingzi” value=”assas” />

ConfigurationManager.appsetting[“mingzi”];获取

CacheHelper

public class CaCheHelper

{

/// <summary>

/// 获取cache

/// </summary>

/// <param name="key"></param>

/// <param name="value"></param>

public static void set(string key, string value)

{

System.Web.Caching.Cache cache = HttpRuntime.Cache;

cache[key] = value;

}

/// <summary>

/// 设置cache

/// </summary>

/// <param name="key"></param>

/// <returns></returns>

public static object Get(string key)

{

System.Web.Caching.Cache cache = HttpRuntime.Cache;

return cache[key];

}

/// <summary>

/// 移除cache

/// </summary>

/// <param name="key"></param>

public static void Remove(string key)

{

System.Web.Caching.Cache cache = HttpRuntime.Cache;

cache.Remove(key);

}

}

MemCacheHelper

private static readonly MemcachedClient mc = null;

static MemCacheHelper()

{

string[] serverlist = { "127.0.0.1:11211" }; //把ip和端口号定义在webConfig

//初始化池

SockIOPool pool = SockIOPool.GetInstance();

pool.SetServers(serverlist);

pool.InitConnections = 3;

pool.MinConnections = 3;

pool.MaxConnections = 5;

pool.SocketConnectTimeout = 1000;

pool.SocketTimeout = 3000;

pool.MaintenanceSleep = 30;

pool.Failover = true;

pool.Nagle = false;

pool.Initialize();

// 获得客户端实例

mc = new MemcachedClient();

mc.EnableCompression = false;

}

/// <summary>

/// 设置

/// </summary>

/// <param name="key"></param>

/// <param name="value"></param>

public static void Set(string key, object value)

{

mc.Set(key, value);

}

/// <summary>

/// 获取缓存

/// </summary>

/// <param name="key"></param>

/// <returns></returns>

public static object Get(string key)

{

return mc.Get(key);

}

/// <summary>

/// 设置缓存并且制定过期时间

/// </summary>

/// <param name="key"></param>

/// <param name="value"></param>

/// <param name="dt"></param>

public static void Set(string key, object value, DateTime dt)

{

mc.Set(key, value, dt);

}

/// <summary>

/// 删除缓存

/// </summary>

/// <param name="key"></param>

/// <returns></returns>

public static bool Delete(string key)

{

if (mc.KeyExists(key))

{

return mc.Delete(key);

}

return false;

}

}

//读取的时候先进行判断  如果缓存数据中有这个配置节那么就直接返回  如果没有这个配置节那么就从数据库中读取 并且返回  同时把从数据库中读取的数据放入缓存中

public string GetValue(string key)

{

//加上缓存依赖项 在更新数据的时候别忘了remove缓存

//object obj = Common.CaCheHelper.Get("setting_" + key);//第一次没有所以从数据库中取出

//if (obj == null)

//{

//    var setting = this.DbSession.SettingsDal.LoadEntities(c => c.Name == key).FirstOrDefault();

//    if (setting != null)

//    {

//        Common.CaCheHelper.set("setting_" + key, setting.Value);

//        //读取出来数据后放入缓存

//        //返回对应的值

//        return setting.Value;

//    }

//}

//return obj.ToString();

object o = BookShop.Common.MemCacheHelper.Get("setting_" + key);

if (o == null)

{

var setting = this.DbSession.SettingsDal.LoadEntities(c => c.Name == key).FirstOrDefault();

if (setting != null)

{

BookShop.Common.MemCacheHelper.Set("setting_" + key, setting.Value);

return setting.Value;

}

}

return o.ToString();

自定义缓存Memcache 以及Cache

时间: 2024-11-05 13:30:32

自定义缓存Memcache 以及Cache的相关文章

laravel自定义缓存memcache(自带memcached,windows不支持)

1.首先弄清楚memcache和memcached的区别(自行搜索) 2.安装memcache服务端(参照https://www.cnblogs.com/winstonsias/p/10190745.html)及php扩展(参照https://www.cnblogs.com/winstonsias/p/10193781.html) 3.添加服务提供类 MemcacheServiceProvider ,记得在app.php配置文件添加提供者注册 1 namespace App\Providers;

借鉴dubbo实现自定义缓存

自定义缓存一般基于ConcurrentMap实现,实现缓存需要注意的点是缓存容器对象 本身依赖于 static final去存储对象,样例: ConcurrentMap<String, GenericServiceCache> cacheHolder = new ConcurrentHashMap<String, GenericServiceCache>();.虚拟机会在内存加载时 有特殊的初始化,如果通过类似单例方式创建对象会导致需要同步,而同步在高并发下导致性能变差, 更好的缓

83-高性能,分布式缓存memcache简析

一. memcached简介 memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in      speeding up dynamic web applications by alleviating database load. (由 LiveJournal旗下的Danga Interactive研发) #高性能,分布

MVC 使用自定义缓存

MVC使用自定义缓存:首先我是在一个工具类库中新建一个缓存帮助类,比如这里我在Itcast.CMS.Common 类库中新建了一个CacheHelper.cs类 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace

【.net 深呼吸】自定义缓存配置(非Web项目)

在前一篇烂文中,老周简单讲述了非Web应用的缓存技术的基本用法.其实嘛,使用系统默认方案已经满足我们的需求了,不过,如果你真想自己来配置缓存,也是可以的. 缓存的自定义配置可以有两种方案,一种是用代码在应用程序中配置,即实例化MemoryCache对象时,可以向构造函数传递一个NameValueCollection实例,数据结构就是key-value形式,这些配置项的名字其实就是MemoryCacheElement类的以下三个属性:CacheMemoryLimitMegabytes.Physic

使用缓存Memcache存储更新微信access token

关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效. 公众号可以使用AppID和AppSecret调用本接口来获取access_token.AppID和App

缓存MEMCACHE 使用原子性操作add,实现并发锁

memcache中Memcache::add()方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器.我们使用add来向服务器添加一个键值对应,如果成功则添加,否则说明存在另一个并发作业在进行操作.通过add的原子性来判断是否要执行热点代码.具体代码需结合上一篇的php使用memcache.使用该方法控制并发需要考虑到缓存的有效期.缓存基于内存的特点. 实现一个包含锁,解锁,锁状态检查的类cacheLock: 1 class cacheLock{ 2 const

php5.4之分布式缓存memcache(windows7下安装配置)

一.安装memcache memcached在windows7上的安装问题 现在安装包:http://www.jb51.net/softs/44843.html   memcache的安装包 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d install 报错" failed to install service or service already installed" 解决方法: www.2cto.c

192.168.62.124python运维开发(十一)----python操作缓存memcache、redis

内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Memcached安装配置 #安装依赖包 yum install libeve