C# redis 简单的对象池
来源:互联网 发布:上海java培训哪个好 编辑:程序博客网 时间:2024/05/17 09:24
public class WaterRedisClient
{
public static WaterRedisClient WaterRedisClientInstace() {
return new WaterRedisClient();
}
public static readonly object obj = new object();
private static int capacity = 0;
public List<ClientManager> GetClientManagers()
{
return ClientManagers;
}
public WaterRedisClient()
{
ClientManagers = new List<ClientManager>();//初次需要实例化
}
public ClientManager GetWaterClientManager()
{
ClientManager clientManager = null;
if (ClientManagers!=null)
{
if (ClientManagers.Any(p => !p.IsUseing))
{
lock (obj)
{
if (ClientManagers.Any(p => !p.IsUseing))
{
clientManager = ClientManagers.FirstOrDefault(p => !p.IsUseing);
if (clientManager != null) clientManager.IsUseing = true;
}
}
}
}
if (clientManager == null)
{
clientManager = new ClientManager(ConnectionMultiplexer.Connect(string.Join(",", List<string>RedisCluster)));//集群(IP:端口)数组
lock (obj)
{
if (capacity < 50)
{
capacity++;
ClientManagers.Add(clientManager);
}
}
}
return clientManager;
}
protected List<ClientManager> ClientManagers { get; private set; }
public class ClientManager : IDisposable
{
public ClientManager(ConnectionMultiplexer redis)
{
this.Redis = redis;
this.IsUseing = true;
CreateTime = DateTime.Now;
}
public ConnectionMultiplexer Redis { get; set; }
public DateTime CreateTime { get; set; }
public bool IsUseing { get; set; }
public void Dispose()
{
IsUseing = false;
}
}
}
{
public static WaterRedisClient WaterRedisClientInstace() {
return new WaterRedisClient();
}
public static readonly object obj = new object();
private static int capacity = 0;
public List<ClientManager> GetClientManagers()
{
return ClientManagers;
}
public WaterRedisClient()
{
ClientManagers = new List<ClientManager>();//初次需要实例化
}
public ClientManager GetWaterClientManager()
{
ClientManager clientManager = null;
if (ClientManagers!=null)
{
if (ClientManagers.Any(p => !p.IsUseing))
{
lock (obj)
{
if (ClientManagers.Any(p => !p.IsUseing))
{
clientManager = ClientManagers.FirstOrDefault(p => !p.IsUseing);
if (clientManager != null) clientManager.IsUseing = true;
}
}
}
}
if (clientManager == null)
{
clientManager = new ClientManager(ConnectionMultiplexer.Connect(string.Join(",", List<string>RedisCluster)));//集群(IP:端口)数组
lock (obj)
{
if (capacity < 50)
{
capacity++;
ClientManagers.Add(clientManager);
}
}
}
return clientManager;
}
protected List<ClientManager> ClientManagers { get; private set; }
public class ClientManager : IDisposable
{
public ClientManager(ConnectionMultiplexer redis)
{
this.Redis = redis;
this.IsUseing = true;
CreateTime = DateTime.Now;
}
public ConnectionMultiplexer Redis { get; set; }
public DateTime CreateTime { get; set; }
public bool IsUseing { get; set; }
public void Dispose()
{
IsUseing = false;
}
}
}
阅读全文
0 0
- C# redis 简单的对象池
- 面向对象的简单计算器C#语言版
- C#之面向对象的简单总结
- redis java和c#两个版本的简单使用
- Redis的String对象
- Redis的一个简单连接池
- redis的简单理解
- redis的简单使用
- Redis的简单使用
- redis的简单使用
- redis 简单的缓存
- redis的简单使用
- redis的简单查看
- Redis的简单命令
- redis 的简单使用
- redis的简单理解
- 简单的Redis学习
- Redis的简单应用
- javascript中getComputedStyle和currentStyle的兼容写法
- R解析文件--找出常用地址
- 大数据显示:上海女人最难脱单?看到原因我哭了
- java双向链接表LinkedList的编写模拟实现
- Java提高之HashMap与Hashtable的区别
- C# redis 简单的对象池
- RabbitMQ学习心得——发布/订阅(中)
- linux CPU压力测试stress
- 提高代码可读性的10个技巧
- 利用百度AI开放平台的语言处理基础技术(Python)
- CSDN 博客前200名
- CSS3 盒元素 弹性空间分配
- iOS 修改导航栏Item大小
- win10 关闭 任务栏 操作中心 通知栏 图标