加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何更改redis客户端来自redis池的redis数据库

发布时间:2020-12-15 21:53:24 所属栏目:百科 来源:网络整理
导读:当我使用redis池时,我怎么能改变b(redis命令选择). 我想从不同的DB写主机和读主机. 例如: 刚才我只有一台redis服务器,所以readWriteHosts = readOnlyHosts pool = RedisDao.CreateManager(hostIp,hostIp); public static PooledRedisClientManager CreateMa
当我使用redis池时,我怎么能改变b(redis命令选择).

我想从不同的DB写主机和读主机.

例如:

刚才我只有一台redis服务器,所以readWriteHosts = readOnlyHosts

pool = RedisDao.CreateManager(hostIp,hostIp);

 public static PooledRedisClientManager CreateManager(string[] readWriteHosts,string[] readOnlyHosts)
    {
        return new PooledRedisClientManager(readWriteHosts,readOnlyHosts,new RedisClientManagerConfig
        {
            MaxWritePoolSize = 50,//
            MaxReadPoolSize = 5,//
            AutoStart = true,});
    }

    public RedisDB ReadRedisForModel(String ID)
    {

//这里我想用DB号是天?

using (var redis = pool.GetClient())
        {
            RedisDB model = new RedisDB();
            Dictionary<string,string> dic = redis.GetAllEntriesFromHash(keyPrefix + ID);
            model.ID = ID;//Int32.Parse(ids[i]);           
            return model;
        }           
    }

    public void WriteRedis(RedisDB model)
    {

//这里我想使用DB号是(第1天)?

using (var redis = pool.GetClient())
            {

编辑:

我找到了设置不同数据库的方法,但我觉得这个解决方案不是最好的方法.

if(redis is RedisClient)
                {
                        long db =  redis.DB;//db always = 0;
                       ((RedisClient)redis).ChangeDB((day-1)%15);
                }

是否需要锁定线程?当我读或写redis.
我担心,我在mutil-thread中得到了相同的redis客户端.然后redis DB是?

编辑结束

int time = DateTimeUtil.ConvertDateTimeInt(DateTime.Now);
                model.ID = time + redis.Increment(incrementKey,1) + "";//.Incr("ID");                
                using (var pip = redis.CreatePipeline())
                {
                    pip.QueueCommand(r => r.AddItemToList(primaryKey,model.ID + ""));
                    pip.Flush();
                };

            };                         
    }

我从池中获取了redisClient,但是redisClient没有changeDB的功能.

所以任何人都知道怎么设置它?

解决方法

例如:

//write
    bool IsNeedChangeDB=true;
    int WriteDBNumber=3
        public static PooledRedisClientManager pool = RedisDao.CreateManager(hostIp,hostIp);
        using (var redis = pool.GetClient())
                    {
                        if (redis is RedisClient && IsNeedChangeDB)
                        {
                             if (redis.Db != this.WriteDBNumber)
                                {
                                    ((RedisClient)redis).ChangeDb(this.WriteDBNumber);
                                }
                                else
                                {
                                    Trace.WriteLine("it is a test" + redis.Host);
                                }
                        }
                        redis.Set<string>("key","value");
                    }

int ReadDBNumber=3;
//read
protected IRedisClient GetRedisClient()
        {
            var redis = pool.GetClient();

            if (redis is RedisClient && IsNeedChangeDB)
            {                
                if (redis.Db != this.ReadDBNumber)
                    ((RedisClient)redis).ChangeDb(this.ReadDBNumber);
            }

            return  redis; 
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读