首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改redis客户端来自redis池的redis DB

如何更改redis客户端来自redis池的redis DB
EN

Stack Overflow用户
提问于 2013-07-16 05:23:03
回答 1查看 3.4K关注 0票数 4

当我使用redis池时,如何更改b(redis命令选择)。

我想要写主机和读取主机从不同的DB。

例如:

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

代码语言:javascript
复制
 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编号是天%15

代码语言:javascript
复制
        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)%15

代码语言:javascript
复制
            using (var redis = pool.GetClient())
            {

编辑:

我找到了一种设置不同DB的方法,但是我觉得这个解决方案并不是最好的方法。

代码语言:javascript
复制
                if(redis is RedisClient)
                {
                        long db =  redis.DB;//db always = 0;
                       ((RedisClient)redis).ChangeDB((day-1)%15);
                }

需要锁线程吗?当我被读或写信给瑞迪斯时。恐怕,我有同样的红人客户在多线程。那么红宝石是吗?

编辑端

代码语言:javascript
复制
                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的功能。

有人知道怎么设置吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-28 08:03:54

例如:

代码语言:javascript
复制
//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; 
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17668602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档