You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ServiceStack.Redis;
|
|
using ServiceStack.Redis.Generic;
|
|
|
|
namespace Senparc.Weixin.Cache.Redis
|
|
{
|
|
public class RedisManager
|
|
{
|
|
/// <summary>
|
|
/// redis配置文件信息
|
|
/// </summary>
|
|
private static RedisConfigInfo redisConfigInfo = RedisConfigInfo.GetConfig();
|
|
|
|
private static PooledRedisClientManager prcm;
|
|
|
|
/// <summary>
|
|
/// 静态构造方法,初始化链接池管理对象
|
|
/// </summary>
|
|
static RedisManager()
|
|
{
|
|
CreateManager();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 创建链接池管理对象
|
|
/// </summary>
|
|
private static void CreateManager()
|
|
{
|
|
string[] writeServerList = SplitString(redisConfigInfo.WriteServerList, ",");
|
|
string[] readServerList = SplitString(redisConfigInfo.ReadServerList, ",");
|
|
|
|
prcm = new PooledRedisClientManager(readServerList, writeServerList,
|
|
new RedisClientManagerConfig
|
|
{
|
|
MaxWritePoolSize = redisConfigInfo.MaxWritePoolSize,
|
|
MaxReadPoolSize = redisConfigInfo.MaxReadPoolSize,
|
|
AutoStart = redisConfigInfo.AutoStart,
|
|
});
|
|
}
|
|
|
|
private static string[] SplitString(string strSource, string split)
|
|
{
|
|
return strSource.Split(split.ToArray());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户端缓存操作对象
|
|
/// </summary>
|
|
public static IRedisClient GetClient()
|
|
{
|
|
if (prcm == null)
|
|
CreateManager();
|
|
|
|
return prcm.GetClient();
|
|
}
|
|
|
|
public static IRedisTypedClient<T> GetTypedClient<T>()
|
|
{
|
|
if (prcm == null)
|
|
CreateManager();
|
|
|
|
return prcm.GetClient().As<T>();
|
|
}
|
|
}
|
|
}
|