当我使用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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。