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. 编辑结束 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |