设为首页 收藏本站
查看: 887|回复: 0

[经验分享] .NET使用Redis基本操作实战

[复制链接]

尚未签到

发表于 2015-7-22 10:15:43 | 显示全部楼层 |阅读模式
  需要的DLL



using ServiceStack.Common.Extensions;
using ServiceStack.Redis;
using ServiceStack.Redis.Generic;
using ServiceStack.Text;
using ServiceStack.Redis.Support;
  
  声明一个客户端对象:



protected RedisClient Redis = new RedisClient("127.0.0.1", 6379);//redis服务IP和端口
  
  一 .基本KEY/VALUE键值对操作:
  1. 添加/获取:



List storeMembers =new List();
storeMembers.ForEach(x => Redis.AddItemToList("additemtolist", x));
注:也可直接使用AddRangeToList方法将一组数据装入如:
Redis.AddRangeToList("addarrangetolist", storeMembers);
  
  2. 获取数据:



var members = Redis.GetAllItemsFromList("additemtolist");
members.ForEach(s => Response.Write("additemtolist :"+ s));
  
  3. 获取指定索引位置数据:



var item = Redis.GetItemFromList("addarrangetolist", 2);
  4. 移除:



var list = Redis.Lists["addarrangetolist"];
list.Clear();//清空
list.Remove("two");//移除指定键值
list.RemoveAt(2);//移除指定索引位置数据
  
  二.存储对象:



publicclass UserInfo
{
publiclong Id { set; get; }
publicstring UserName { get; set; }
publicint Age { get; set; }
}
  
  1.通常方式(底层使用json序列化):



Redis.Set("userinfo", new UserInfo() { UserName ="李四", Age =45 });
UserInfo userinfo = Redis.Get("userinfo");
//注:当然上面方式也适合于基本类型,如:

Redis.Set("my_age", 12);//或Redis.Set("my_age", 12);
int age = Redis.Get("my_age");
  
  2.object序列化方式存储:



var ser =new ObjectSerializer(); //位于namespace ServiceStack.Redis.Support;
bool result = Redis.Set("userinfo", ser.Serialize(new UserInfo() { UserName ="张三", Age =12 }));
UserInfo userinfo = ser.Deserialize(Redis.Get("userinfo")) as UserInfo;
//也支持列表
Redis.Set("userinfolist_serialize", ser.Serialize(userinfoList));
List userList = ser.Deserialize(Redis.Get("userinfolist_serialize")) as List;
  
  三.存储表格对象,比如:



using (var redisUsers = Redis.GetTypedClient())
{
redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName ="daizhj", Age =12 });
redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName ="daizhenjun", Age =13 });
var allUsers = redisUsers.GetAll();//就像操作ado对象一样,可以进行CRUD等操作
allUsers.ForEach(s => Response.Write("user :"+ s.UserName +" age:"+ s.Age));
}
  
  四.使用客户端链接池模式提升链接速度:



publicstatic PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
{
//支持读写分离,均衡负载
returnnew PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
{
MaxWritePoolSize =5,//“写”链接池链接数
MaxReadPoolSize =5,//“写”链接池链接数
AutoStart =true,
});
}
  
  声明链接池对象(这里只使用一个redis服务端):



PooledRedisClientManager prcm = CreateManager(newstring[] { "127.0.0.1:6379" }, newstring[] { "127.0.0.1:6379" });
List userinfoList =new List();
userinfoList.Add(new UserInfo() { UserName ="pool_daizhj", Age =1 });
userinfoList.Add(new UserInfo() { UserName ="pool_daizhj1", Age =2 });
  
  从池中获取一个链接:



using (IRedisClient Redis = prcm.GetClient())
{
Redis.Set("userinfolist", userinfoList);
List userList = Redis.Get("userinfolist");
}
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89369-1-1.html 上篇帖子: Redis 资料整理 下篇帖子: Redis 通讯协议规范
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表