tnblog
首页

ServiceStack.Redis操作Redis配置单例模式

385人阅读 2018/12/21 10:09 评论:0 收藏
分类: Redis


单利的应该是连接池而不应该是redis对象。如果每次操作都是一个redis对象是会有并发问题的,

应该从连接池中去拿。


解释半天都没有用直接贴代码吧

 public class SingletonRedis
    {
        // 定义一个静态变量来保存类的实例
        private static PooledRedisClientManager poolrl;

        private static readonly object obj = new object();

        // 定义私有构造函数,使外界不能创建该类实例
        private SingletonRedis()
        {

        }

        /// <summary>
        /// 获取Redis写节点
        /// </summary>
        /// <returns></returns>
        public static RedisClient GetInstance()
        {
            // 如果连接池的实例不存在则创建,否则直接返回
            if (poolrl == null)
            {
                lock (obj)
                {
                    if (poolrl == null)
                    {
                        CreatePoolManager();
                    }
                }
            }

            return poolrl.GetClient() as RedisClient;
        }

        /// <summary>
        /// 获取Redis读节点
        /// </summary>
        /// <returns></returns>
        public static RedisClient GetReadOnlyInstance()
        {
            if (poolrl == null)
            {
                lock (obj)
                {
                    if (poolrl == null)
                    {
                        CreatePoolManager();
                    }
                }
            }
            return poolrl.GetReadOnlyClient() as RedisClient;
        }


        private static void CreatePoolManager()
        {
            //----------------------发布的时候用外网---------------------------

            //----------------------测试的时候用本地---------------------------

            //写节点(主节点)
            List<string> writes = new List<string>();
            writes.Add("127.0.0.1:6379");
            //读节点
            List<string> reads = new List<string>();
            reads.Add("127.0.0.1:6379");

            //配置连接池和读写分类
            poolrl = new PooledRedisClientManager(writes, reads, new RedisClientManagerConfig()
            {
                MaxReadPoolSize = 50, //读节点个数
                MaxWritePoolSize = 50,//写节点个数
            });
        }
   }



请先登录

{{item.title}}

{{item.content}}
不能简单的解决问题,那是设计与做法有问题
博主搜索
文章类别
CSS 5篇
云服务 2篇
Git 4篇
.NET 29篇
Android 0篇
软件架构 4篇
.NET Core 15篇
.NET MVC 3篇
英语 3篇
随笔 3篇
Bootstrap 1篇
Redis 12篇
编辑器 2篇
Js相关 6篇
Layui 2篇
Oracle 7篇
Python 2篇
数据库 2篇
EF 2篇
微信 2篇
前端 1篇
消息队列 1篇
最新文章
为什么要使用webapi而不直接使用controller
net core发布到IIS常见错误
net core依赖注入
NET CORE配置EF连接字符串
Net Core使用依赖注入来装载EF的上下文对象
下载net core
Sqlerver添加用户与授权
net core中使用url编码与解码操作
net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified
.net core使用response
ef6动态添加条件
最新评价
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}