服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - 在c#中使用servicestackredis操作redis的实例代码

在c#中使用servicestackredis操作redis的实例代码

2022-01-10 14:22新正 C#

本篇文章主要介绍了在c#中使用servicestackredis操作redis的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

声明一个客户端对象:

 

复制代码 代码如下:

protected RedisClient Redis = new RedisClient("127.0.0.1", 6379);//redis服务IP和端口

 

一 .基本KEY/VALUE键值对操作:

1. 添加/获取:

?
1
2
3
4
List<string> storeMembers = new List<string>();
 storeMembers.ForEach(x => Redis.AddItemToList("test", x));
  //注:也可直接使用AddRangeToList方法将一组数据装入如:
   Redis.AddRangeToList("testt", storeMembers);

2. 获取数据

?
1
2
var members = Redis.GetAllItemsFromList("test");
 members.ForEach(s => Response.Write("<br/>test :" + s));

3. 获取指定索引位置数据

?
1
var item = Redis.GetItemFromList("test", 2);

4. 移除:

?
1
2
3
4
var list = Redis.Lists["test"];
 list.Clear();//清空
 list.Remove("two");//移除指定键值
 list.RemoveAt(2);//移除指定索引位置数据

二.存储对象:

?
1
2
3
4
5
6
7
[Serializable]
public class UserInfo
  {
    public long Id { set; get; }
    public string UserName { get; set; }
    public int Age { get; set; }
  }

1.通常方式(底层使用json序列化):

?
1
2
Redis.Set<UserInfo>("userinfo", new UserInfo() { UserName = "李四", Age = 45 });
 UserInfo userinfo = Redis.Get<UserInfo>("userinfo");

注:当然上面方式也适合于基本类型,如:

?
1
2
Redis.Set<int>("my_age", 12);//或Redis.Set("my_age", 12);
  int age = Redis.Get<int>("my_age");

2.object序列化方式存储:

?
1
2
3
4
5
6
7
8
9
var ser = new ObjectSerializer();  //位于namespace ServiceStack.Redis.Support;
 bool result = Redis.Set<byte[]>("userinfo", ser.Serialize(new UserInfo() { UserName = "张三", Age = 12 }));
 UserInfo userinfo = ser.Deserialize(Redis.Get<byte[]>("userinfo")) as UserInfo;
 //也支持列表
List<UserInfo> userinfoList = new List<UserInfo>();
      userinfoList.Add(new UserInfo() { UserName = "pool_daizhj", Age = 1 });
      userinfoList.Add(new UserInfo() { UserName = "pool_daizhj1", Age = 2 });
 Redis.Set<byte[]>("userinfolist_serialize", ser.Serialize(userinfoList));
 List<UserInfo> userList = ser.Deserialize(Redis.Get<byte[]>("userinfolist_serialize")) as List<UserInfo>;

需要说明的是在测试过程中发现JSON序列化的效率要比object序列化高一些。

三.存储表格对象,比如:

?
1
2
3
4
5
6
using (var redisUsers = Redis.As<UserInfo>())
 {
   redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName = "test1", Age = 22 });
   redisUsers.Store(new UserInfo { Id = redisUsers.GetNextSequence(), UserName = "test2", Age = 23 });
   var allUsers = redisUsers.GetAll();//就像操作ado对象一样,可以进行CRUD等操作
 }

四.使用客户端链接池模式提升链接速度:

?
1
2
3
4
5
6
7
8
9
10
public static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
 {
    //支持读写分离,均衡负载
    return new PooledRedisClientManager(readWriteHosts, readOnlyHosts, new RedisClientManagerConfig
    {
      MaxWritePoolSize = 5,//“写”链接池链接数
      MaxReadPoolSize = 5,//“读”链接池链接数
      AutoStart = true,
    });    
 }

声明链接池对象(这里只使用一个redis服务端):

?
1
2
3
4
5
PooledRedisClientManager prcm = CreateManager(new string[] { "127.0.0.1:6379" }, new string[] { "127.0.0.1:6379" });
 
 List<UserInfo> userinfoList = new List<UserInfo>();
 userinfoList.Add(new UserInfo() { UserName = "pool_daizhj", Age = 1 });
 userinfoList.Add(new UserInfo() { UserName = "pool_daizhj1", Age = 2 });

从池中获取一个链接:

?
1
2
3
4
5
using (IRedisClient Redis = prcm.GetClient())
 {      
    Redis.Set("userinfolist", userinfoList);
    List<UserInfo> userList = Redis.Get<List<UserInfo>>("userinfolist");
 }

注:

如只想使用长链接而不是链接池的话,可以直接将下面对象用static方式声明即可: 

?
1
protected static RedisClient Redis = new RedisClient("127.0.0.1", 6379);

这样在redis服务端显示只有一个客户链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/xinzheng/p/6063505.html

延伸 · 阅读

精彩推荐
  • C#深入理解C#的数组

    深入理解C#的数组

    本篇文章主要介绍了C#的数组,数组是一种数据结构,详细的介绍了数组的声明和访问等,有兴趣的可以了解一下。...

    佳园9492021-12-10
  • C#C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    这篇文章主要介绍了C#设计模式之Strategy策略模式解决007大破密码危机问题,简单描述了策略模式的定义并结合加密解密算法实例分析了C#策略模式的具体使用...

    GhostRider10972022-01-21
  • C#C#微信公众号与订阅号接口开发示例代码

    C#微信公众号与订阅号接口开发示例代码

    这篇文章主要介绍了C#微信公众号与订阅号接口开发示例代码,结合实例形式简单分析了C#针对微信接口的调用与处理技巧,需要的朋友可以参考下...

    smartsmile20127762021-11-25
  • C#三十分钟快速掌握C# 6.0知识点

    三十分钟快速掌握C# 6.0知识点

    这篇文章主要介绍了C# 6.0的相关知识点,文中介绍的非常详细,通过这篇文字可以让大家在三十分钟内快速的掌握C# 6.0,需要的朋友可以参考借鉴,下面来...

    雨夜潇湘8272021-12-28
  • C#如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    这篇文章主要给大家介绍了关于如何使用C#将Tensorflow训练的.pb文件用在生产环境的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴...

    bbird201811792022-03-05
  • C#VS2012 程序打包部署图文详解

    VS2012 程序打包部署图文详解

    VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软...

    张信秀7712021-12-15
  • C#利用C#实现网络爬虫

    利用C#实现网络爬虫

    这篇文章主要介绍了利用C#实现网络爬虫,完整的介绍了C#实现网络爬虫详细过程,感兴趣的小伙伴们可以参考一下...

    C#教程网11852021-11-16
  • C#SQLite在C#中的安装与操作技巧

    SQLite在C#中的安装与操作技巧

    SQLite,是一款轻型的数据库,用于本地的数据储存。其优点有很多,下面通过本文给大家介绍SQLite在C#中的安装与操作技巧,感兴趣的的朋友参考下吧...

    蓝曈魅11162022-01-20