类:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.Caching;namespace RisunFactoryLibrary{public class CacheHelper{/// /// 创建缓存项的文件依赖/// /// 缓存Key/// object对象/// 文件绝对路径public static void Insert(string key, object obj, string fileName){//创建缓存依赖项CacheDependency dep = new CacheDependency(fileName);//创建缓存HttpContext.Current.Cache.Insert(key, obj, dep);}/// /// 创建缓存项的文件依赖/// /// 缓存Key/// object对象/// 文件绝对路径public static void Remove(string key){//创建缓存HttpContext.Current.Cache.Remove(key);}/// /// 创建缓存项过期/// /// 缓存Key/// object对象/// 过期时间(分钟)public static void Insert(string key, object obj, int expires){HttpContext.Current.Cache.Insert(key, obj, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, expires, 0));}/// /// 获取缓存对象/// /// 缓存Key/// object对象public static object Get(string key){if (string.IsNullOrEmpty(key)){return null;}return HttpContext.Current.Cache.Get(key);}/// /// 获取缓存对象/// /// T对象/// 缓存Key/// public static T Get(string key){object obj = Get(key);return obj == null ? default(T) : (T)obj;}}}

调用:

List records = new List();records.Add(new {id:1,data:"2024-01-01 00:00:00"});records.Add(new {id:2,data:"2024-01-02 00:00:00"});records.Add(new {id:3,data:"2024-01-03 00:00:00"});CacheHelper.Insert("attendanceRecords_json", records, 600);//插入缓存记录,设置过期时间为十分钟CacheHelper.Remove("record");//删除记录缓存

一般用于数据去重,例如在插入考勤记录时,过滤1分钟内重复出现的人员记录,可获取1分钟内出现的人员记录,在每次插入时判断当前人员是否1分钟内出现,如果出现则不插入记录。需要保证缓存记录一直为最新的记录。

可能存在的BUG,当同一人员的两次请求的时间间隔过短时(并发),可能在两次请求处理时缓存数据中均不存在该人员信息,会导致同时插入两条该人员信息(无法去重情况),暂时未遇到该种情况,遇到后更新解决办法

Copyright © maxssl.com 版权所有 浙ICP备2022011180号