c# RedisHelper
使用redis组件如下,至于为什么使用3.9版本,是因为4.0开始商业了,限制了次数
ServiceStack.Common" version="3.9.70"
ServiceStack.Redis" version="3.9.71"
ServiceStack.Text" version="3.9.71"
接口
- public interface ICache
- {
- #region Key-Value
- /// <summary>
- /// 读取缓存
- /// </summary>
- /// <param name="cacheKey">键</param>
- /// <returns></returns>
- T Read<T>(string cacheKey, long dbId = ) where T : class;
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- void Write<T>(string cacheKey, T value, long dbId = ) where T : class;
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- /// <param name="expireTime">到期时间</param>
- void Write<T>(string cacheKey, T value, DateTime expireTime, long dbId = ) where T : class;
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- /// <param name="expireTime">到期时间</param>
- void Write<T>(string cacheKey, T value, TimeSpan timeSpan, long dbId = ) where T : class;
- /// <summary>
- /// 移除指定数据缓存
- /// </summary>
- /// <param name="cacheKey">键</param>
- void Remove(string cacheKey, long dbId = );
- /// <summary>
- /// 移除全部缓存
- /// </summary>
- void RemoveAll(long dbId = );
- #endregion
- }
配置类
- public sealed class RedisConfigInfo : ConfigurationSection
- {
- /// <summary>
- /// 获取配置信息
- /// </summary>
- /// <returns></returns>
- public static RedisConfigInfo GetConfig()
- {
- return GetConfig("redisconfig");
- }
- /// <summary>
- /// 获取配置信息
- /// </summary>
- /// <param name="sectionName">xml节点名称</param>
- /// <returns></returns>
- public static RedisConfigInfo GetConfig(string sectionName)
- {
- RedisConfigInfo section = (RedisConfigInfo)ConfigurationManager.GetSection(sectionName);
- if (section == null)
- throw new ConfigurationErrorsException("Section " + sectionName + " is not found.");
- return section;
- }
- /// <summary>
- /// 可写的Redis链接地址
- /// </summary>
- [ConfigurationProperty("WriteServerList", IsRequired = false)]
- public string WriteServerList
- {
- get
- {
- return (string)base["WriteServerList"];
- }
- set
- {
- base["WriteServerList"] = value;
- }
- }
- /// <summary>
- /// 可读的Redis链接地址
- /// </summary>
- [ConfigurationProperty("ReadServerList", IsRequired = false)]
- public string ReadServerList
- {
- get
- {
- return (string)base["ReadServerList"];
- }
- set
- {
- base["ReadServerList"] = value;
- }
- }
- /// <summary>
- /// 最大写链接数
- /// </summary>
- [ConfigurationProperty("MaxWritePoolSize", IsRequired = false, DefaultValue = )]
- public int MaxWritePoolSize
- {
- get
- {
- int _maxWritePoolSize = (int)base["MaxWritePoolSize"];
- return _maxWritePoolSize > ? _maxWritePoolSize : ;
- }
- set
- {
- base["MaxWritePoolSize"] = value;
- }
- }
- /// <summary>
- /// 最大读链接数
- /// </summary>
- [ConfigurationProperty("MaxReadPoolSize", IsRequired = false, DefaultValue = )]
- public int MaxReadPoolSize
- {
- get
- {
- int _maxReadPoolSize = (int)base["MaxReadPoolSize"];
- return _maxReadPoolSize > ? _maxReadPoolSize : ;
- }
- set
- {
- base["MaxReadPoolSize"] = value;
- }
- }
- /// <summary>
- /// 自动重启
- /// </summary>
- [ConfigurationProperty("AutoStart", IsRequired = false, DefaultValue = true)]
- public bool AutoStart
- {
- get
- {
- return (bool)base["AutoStart"];
- }
- set
- {
- base["AutoStart"] = value;
- }
- }
- /// <summary>
- /// 本地缓存到期时间,单位:秒
- /// </summary>
- [ConfigurationProperty("LocalCacheTime", IsRequired = false, DefaultValue = )]
- public int LocalCacheTime
- {
- get
- {
- return (int)base["LocalCacheTime"];
- }
- set
- {
- base["LocalCacheTime"] = value;
- }
- }
- /// <summary>
- /// 是否记录日志,该设置仅用于排查redis运行时出现的问题,如redis工作正常,请关闭该项
- /// </summary>
- [ConfigurationProperty("RecordeLog", IsRequired = false, DefaultValue = false)]
- public bool RecordeLog
- {
- get
- {
- return (bool)base["RecordeLog"];
- }
- set
- {
- base["RecordeLog"] = value;
- }
- }
- /// <summary>
- /// 默认开始db
- /// </summary>
- [ConfigurationProperty("DefaultDb", IsRequired = false)]
- public long DefaultDb
- {
- get
- {
- return (long)base["DefaultDb"];
- }
- set
- {
- base["DefaultDb"] = value;
- }
- }
- }
处理类
- public class RedisCache
- {
- #region -- 连接信息 --
- /// <summary>
- /// redis配置文件信息
- /// </summary>
- private static RedisConfigInfo redisConfigInfo = RedisConfigInfo.GetConfig();
- /// <summary>
- /// 创建链接池管理对象
- /// </summary>
- private static PooledRedisClientManager CreateManager(long dbId)
- {
- string[] writeServerList = SplitString(redisConfigInfo.WriteServerList, ",");
- string[] readServerList = SplitString(redisConfigInfo.ReadServerList, ",");
- return new PooledRedisClientManager(readServerList, writeServerList,
- new RedisClientManagerConfig
- {
- MaxWritePoolSize = redisConfigInfo.MaxWritePoolSize,
- MaxReadPoolSize = redisConfigInfo.MaxReadPoolSize,
- AutoStart = redisConfigInfo.AutoStart,
- DefaultDb = dbId
- });
- }
- /// <summary>
- /// 字串转数组
- /// </summary>
- /// <param name="strSource">字串</param>
- /// <param name="split">分隔符</param>
- /// <returns></returns>
- private static string[] SplitString(string strSource, string split)
- {
- return strSource.Split(split.ToArray());
- }
- /// <summary>
- /// 获取redis客户端根据库ID号
- /// </summary>
- /// <param name="dbId">redis库Id</param>
- /// <returns></returns>
- private static PooledRedisClientManager GetClientManager(long dbId)
- {
- return CreateManager(dbId);
- }
- #endregion
- #region -- Item --
- /// <summary>
- /// 设置单体
- /// </summary>
- /// <typeparam name="T">值类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">值</param>
- /// <param name="dbId">库Id</param>
- /// <returns></returns>
- public static bool Set<T>(string key, T t, long dbId = )
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- var res = redis.Set<T>(key, t);
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- return res;
- }
- /// <summary>
- /// 设置单体
- /// </summary>
- /// <typeparam name="T">值类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">值</param>
- /// <param name="timeSpan">保存时间</param>
- /// <param name="dbId">库Id</param>
- /// <returns></returns>
- public static bool Set<T>(string key, T t, TimeSpan timeSpan, long dbId = )
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- var res = redis.Set<T>(key, t, timeSpan);
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- return res;
- }
- /// <summary>
- /// 设置单体
- /// </summary>
- /// <typeparam name="T">值类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">值</param>
- /// <param name="dateTime">过期时间</param>
- /// <returns></returns>
- public static bool Set<T>(string key, T t, DateTime dateTime, long dbId = )
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- var res = redis.Set<T>(key, t, dateTime);
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- return res;
- }
- /// <summary>
- /// 获取单体
- /// </summary>
- /// <typeparam name="T">值类型</typeparam>
- /// <param name="key">键值</param>
- /// <returns></returns>
- public static T Get<T>(string key, long dbId = ) where T : class
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- var res = redis.Get<T>(key);
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- return res;
- }
- /// <summary>
- /// 移除单体
- /// </summary>
- /// <param name="key">键值</param>
- public static bool Remove(string key, long dbId = )
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- var res = redis.Remove(key);
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- return res;
- }
- /// <summary>
- /// 清空所有缓存
- /// </summary>
- public static void RemoveAll(long dbId = )
- {
- var clientManager = GetClientManager(dbId);
- IRedisClient redis = clientManager.GetClient();
- redis.FlushDb();
- clientManager.DisposeClient((RedisNativeClient)redis);
- redis.Dispose();
- clientManager.Dispose();
- }
- #endregion
- #region -- List --
- /// <summary>
- /// 添加列表
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">值</param>
- /// <param name="dbId">库</param>
- public static void List_Add<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- redisTypedClient.AddItemToList(redisTypedClient.Lists[key], t);
- }
- }
- /// <summary>
- /// 移除列表某个值
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool List_Remove<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- return redisTypedClient.RemoveItemFromList(redisTypedClient.Lists[key], t) > ;
- }
- }
- /// <summary>
- /// 移除列表所有值
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="dbId">库Id</param>
- public static void List_RemoveAll<T>(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- redisTypedClient.Lists[key].RemoveAll();
- }
- }
- /// <summary>
- /// 获取列表数据条数
- /// </summary>
- /// <param name="key"></param>
- /// <param name="dbId"></param>
- /// <returns></returns>
- public static long List_Count(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.GetListCount(key);
- }
- }
- /// <summary>
- /// 获取指定条数列表数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="start">开始编号</param>
- /// <param name="count">条数</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static List<T> List_GetRange<T>(string key, int start, int count, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var c = redis.As<T>();
- return c.Lists[key].GetRange(start, start + count - );
- }
- }
- /// <summary>
- /// 获取列表所有数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="dbId">库数据</param>
- /// <returns></returns>
- public static List<T> List_GetList<T>(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var c = redis.As<T>();
- return c.Lists[key].GetRange(, c.Lists[key].Count);
- }
- }
- /// <summary>
- /// 获取列表分页数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="pageIndex">页码</param>
- /// <param name="pageSize">每页条数</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static List<T> List_GetList<T>(string key, int pageIndex, int pageSize, long dbId = )
- {
- int start = pageSize * (pageIndex - );
- return List_GetRange<T>(key, start, pageSize, dbId);
- }
- #endregion
- #region -- Set --
- /// <summary>
- /// 添加集合
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">数值</param>
- /// <param name="dbId">库</param>
- public static void Set_Add<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- redisTypedClient.Sets[key].Add(t);
- }
- }
- /// <summary>
- /// 集合是否包含指定数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">数值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Set_Contains<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- return redisTypedClient.Sets[key].Contains(t);
- }
- }
- /// <summary>
- /// 移除集合某个值
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="t">数值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Set_Remove<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var redisTypedClient = redis.As<T>();
- return redisTypedClient.Sets[key].Remove(t);
- }
- }
- #endregion
- #region -- Hash --
- /// <summary>
- /// 判断某个数据是否已经被缓存
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">hashID</param>
- /// <param name="dataKey">键值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Hash_Exist<T>(string key, string dataKey, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.HashContainsEntry(key, dataKey);
- }
- }
- /// <summary>
- /// 存储数据到hash表
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">hashID</param>
- /// <param name="dataKey">键值</param>
- /// <param name="t">数值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Hash_Set<T>(string key, string dataKey, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);
- return redis.SetEntryInHash(key, dataKey, value);
- }
- }
- /// <summary>
- /// 移除hash中的某值
- /// </summary>
- /// <param name="key">hashID</param>
- /// <param name="dataKey">键值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Hash_Remove(string key, string dataKey, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.RemoveEntryFromHash(key, dataKey);
- }
- }
- /// <summary>
- /// 移除整个hash
- /// </summary>
- /// <param name="key">hashID</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool Hash_Remove(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.Remove(key);
- }
- }
- /// <summary>
- /// 从hash表获取数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">hashID</param>
- /// <param name="dataKey">键值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static T Hash_Get<T>(string key, string dataKey, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- string value = redis.GetValueFromHash(key, dataKey);
- return ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(value);
- }
- }
- /// <summary>
- /// 获取整个hash的数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">hashID</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static List<T> Hash_GetAll<T>(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var list = redis.GetHashValues(key);
- if (list != null && list.Count > )
- {
- List<T> result = new List<T>();
- foreach (var item in list)
- {
- var value = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);
- result.Add(value);
- }
- return result;
- }
- return null;
- }
- }
- #endregion
- #region -- SortedSet --
- /// <summary>
- /// 添加数据到 SortedSet
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">集合id</param>
- /// <param name="t">数值</param>
- /// <param name="score">排序码</param>
- /// <param name="dbId">库</param>
- public static bool SortedSet_Add<T>(string key, T t, double score, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);
- return redis.AddItemToSortedSet(key, value, score);
- }
- }
- /// <summary>
- /// 移除数据从SortedSet
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">集合id</param>
- /// <param name="t">数值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static bool SortedSet_Remove<T>(string key, T t, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- string value = ServiceStack.Text.JsonSerializer.SerializeToString<T>(t);
- return redis.RemoveItemFromSortedSet(key, value);
- }
- }
- /// <summary>
- /// 修剪SortedSet
- /// </summary>
- /// <param name="key">键值</param>
- /// <param name="size">保留的条数</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static long SortedSet_Trim(string key, int size, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.RemoveRangeFromSortedSet(key, size, );
- }
- }
- /// <summary>
- /// 获取SortedSet的长度
- /// </summary>
- /// <param name="key">键值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static long SortedSet_Count(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- return redis.GetSortedSetCount(key);
- }
- }
- /// <summary>
- /// 获取SortedSet的分页数据
- /// </summary>
- /// <typeparam name="T">类型</typeparam>
- /// <param name="key">键值</param>
- /// <param name="pageIndex">页码</param>
- /// <param name="pageSize">每页条数</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static List<T> SortedSet_GetList<T>(string key, int pageIndex, int pageSize, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var list = redis.GetRangeFromSortedSet(key, (pageIndex - ) * pageSize, pageIndex * pageSize - );
- if (list != null && list.Count > )
- {
- List<T> result = new List<T>();
- foreach (var item in list)
- {
- var data = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);
- result.Add(data);
- }
- return result;
- }
- }
- return null;
- }
- /// <summary>
- /// 获取SortedSet的全部数据
- /// </summary>
- /// <typeparam name="T">类</typeparam>
- /// <param name="key">键值</param>
- /// <param name="dbId">库</param>
- /// <returns></returns>
- public static List<T> SortedSet_GetListALL<T>(string key, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- var list = redis.GetRangeFromSortedSet(key, , );
- if (list != null && list.Count > )
- {
- List<T> result = new List<T>();
- foreach (var item in list)
- {
- var data = ServiceStack.Text.JsonSerializer.DeserializeFromString<T>(item);
- result.Add(data);
- }
- return result;
- }
- }
- return null;
- }
- #endregion
- #region 公用方法
- /// <summary>
- /// 设置缓存过期
- /// </summary>
- /// <param name="key">键值</param>
- /// <param name="datetime">过期时间</param>
- /// <param name="dbId">库</param>
- public static void SetExpire(string key, DateTime datetime, long dbId = )
- {
- using (IRedisClient redis = CreateManager(dbId).GetClient())
- {
- redis.ExpireEntryAt(key, datetime);
- }
- }
- #endregion
- }
接口实现
- public class CacheByRedis : ICache
- {
- #region Key-Value
- /// <summary>
- /// 读取缓存
- /// </summary>
- /// <param name="cacheKey">键</param>
- /// <returns></returns>
- public T Read<T>(string cacheKey, long dbId = ) where T : class
- {
- return RedisCache.Get<T>(RedisPrev + cacheKey, dbId);
- }
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- public void Write<T>(string cacheKey, T value, long dbId = ) where T : class
- {
- RedisCache.Set(RedisPrev + cacheKey, value, dbId);
- }
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- /// <param name="expireTime">到期时间</param>
- public void Write<T>(string cacheKey, T value, DateTime expireTime, long dbId = ) where T : class
- {
- RedisCache.Set(RedisPrev + cacheKey, value, expireTime, dbId);
- }
- /// <summary>
- /// 写入缓存
- /// </summary>
- /// <param name="value">对象数据</param>
- /// <param name="cacheKey">键</param>
- /// <param name="TimeSpan">缓存时间</param>
- public void Write<T>(string cacheKey, T value, TimeSpan timeSpan, long dbId = ) where T : class
- {
- RedisCache.Set(RedisPrev + cacheKey, value, timeSpan, dbId);
- }
- /// <summary>
- /// 移除指定数据缓存
- /// </summary>
- /// <param name="cacheKey">键</param>
- public void Remove(string cacheKey, long dbId = )
- {
- RedisCache.Remove(RedisPrev + cacheKey, dbId);
- }
- /// <summary>
- /// 移除全部缓存
- /// </summary>
- public void RemoveAll(long dbId = )
- {
- RedisCache.RemoveAll(dbId);
- }
- /// <summary>
- /// 缓存前缀
- /// </summary>
- private static string _RedisPrev = "";
- private string RedisPrev
- {
- get
- {
- if (_RedisPrev.Length == )
- _RedisPrev = ConfigurationManager.AppSettings["RedisPrev"].ToString();
- return _RedisPrev;
- }
- }
- #endregion
- }
然后再弄个小工厂妥妥的
- public static ICache CaChe()
- {
- return new CacheByRedis();
- }
代码到此结束,使用的话自己慢慢玩
c# RedisHelper的更多相关文章
- Basic Tutorials of Redis(9) -First Edition RedisHelper
After learning the basic opreation of Redis,we should take some time to summarize the usage. And I w ...
- C# Azure 存储-分布式缓存Redis工具类 RedisHelper
using System; using System.Collections.Generic; using Newtonsoft.Json; using StackExchange.Redis; na ...
- Asp.Net Core 2.0 项目实战(6)Redis配置、封装帮助类RedisHelper及使用实例
本文目录 1. 摘要 2. Redis配置 3. RedisHelper 4.使用实例 5. 总结 1. 摘要 由于內存存取速度远高于磁盘读取的特性,为了程序效率提高性能,通常会把常用的不常变动的数 ...
- [C#] 使用 StackExchange.Redis 封装属于自己的 RedisHelper
使用 StackExchange.Redis 封装属于自己的 RedisHelper 目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List ...
- RedisHelper帮助类
using Newtonsoft.Json; using RedLockNet.SERedis; using RedLockNet.SERedis.Configuration; using Stack ...
- RedisHelper in C#
自己写了一个RedisHelper,现贴出来,希望各位大神能够指正和优化. using System; using StackExchange.Redis; using System.Configur ...
- 使用 StackExchange.Redis 封装属于自己的 RedisHelper
目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List) 有序集合(sorted set) Key 操作 发布订阅 其他 简介 目前 .NE ...
- RedisHelper (C#)
<add key="RedisServers" value="172.20.2.90:9379,password=Aa+123456789" /> ...
- RedisHelper Redis帮助类
using StackExchange.Redis; using System; using System.Collections.Generic; using System.IO; using Sy ...
- Redis:RedisHelper(5)
/// <summary> /// Redis 助手 /// </summary> public class RedisHelper { /// <summary> ...
随机推荐
- 【16.52%】【codeforces 733C】Epidemic in Monstropolis
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 获取全局上下文(getApplicationContext)_创建Shared Preference工具类_实现自动登录
获取全局上下文(getApplicationContext)_创建Shared Preference工具类_实现自动登录 ===========================获取全局上下文(getA ...
- General-Purpose Operating System Protection Profile
1 Protection Profile Introduction This document defines the security functionality expected to be ...
- .net remoting 使用事件
原文:.net remoting 使用事件 在RPC如果需要使用事件,相对是比较难的.本文告诉大家如何在 .net remoting 使用事件. 目录 使用 Channel 序列化 开发建议 修复异常 ...
- 回归(regression)的理解(regressor,回归子)
1. 基本概念 回归(regression)是监督学习(given {(xi,yi)})的一个重要分类.回归用于预测输入变量(自变量,Xi)与输出变量(因变量,Yi) 之间的关系,特定是当输入变量的值 ...
- java学习笔记(9)——网络
计算机网络: 最简单的网络由两台计算机组成 计算机A ---协议---> 网络 ---协议---> 计算机B---->端口1---->A软件 192.168.0.118 ...
- Android framework召回(3)binder使用和IBinder BpRefbase IInterface INTERFACE 之间的关系
status_t AudioSystem::setStreamVolumeIndex(audio_stream_type_t stream, int index, audio_devices_t de ...
- 分布式高级(十三)Docker Container之间的数据共享
sudo docker run -it -v /usr/lib:/usr/lib/dbdata --name dbcontainer-192.168.1.184 ubuntu:14.04 sudo d ...
- 计算机的组成 —— PCI(PCIE)、PCB
1. PCI PCI 是 Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽. PC ...
- 张汝京:CIDM模式进可攻、退可守,建议尝试
飞象网讯(路金娣/文)大约30多年前一些美国.日本和欧洲的IDM半导体工厂把多余的产能出来做代工服务,因为代工的公司不会与客户竞争,所以专业代工的模式成为半导体市场的新宠.那么,究竟国内半导体行业更加 ...