如何在Redis通过StackExchange.Redis 存储集合类型List

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Redis通过StackExchange.Redis 存储集合类型List相关的知识,希望对你有一定的参考价值。

解决方案
如果你仅仅为了缓存存一批量的 List<Customer> 数据, 那么自己封装一个ListGet() 和 ListSet()方法吧。
我对比过使用 List 和 String 两种类型存储。
Redis 的List类型和 .NET领域还有所不同,实际上,它是一个双向队列,可以左右插入值。
所以如果是批量数据插入 那么必须一个个插入, 代码比较简单如下:
//封装的ListSet

public void ListSet<T>(string key, List<T> value)

        .....
       //下面的database 是redis的数据库对象.
        foreach (var single in value)
        
                var s = ConvertJson(single); //序列化
                database.ListRightPush(key, s); //要一个个的插入
        

//封装的ListGet
public void ListGet<T>(string key)

       ...
       //ListRange返回的是一组字符串对象
       //需要逐个反序列化成实体
       var vList = database.ListRange(key) ;  
       List<T> result = new List<T>();
       foreach (var item in vList)
       
           var model = ConvertObj<T>(item); //反序列化
           result.Add(model);
       
       return result;


当然测试了一下性能,取20W条数据平均时间


参考技术A Redis里面使用intset是为了实现集合(set)这种对外的数据结构。  set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。  Redis里的set结构还实现了基础的集合并、交、差的操作。  与Redis对外暴露的其它数据结构类似,set的底层实现,随着元素类型是否是整型以及添加的元素的数目多少,而有所变化。概括来讲,当set中添加的元素都是整型且元素数目较少时,set使用intset作为底层数据结构,否则,set使用dict作为底层数据结构。

Redis如何通过本机客户端访问远程服务器段

1、Redis默认端口号为127.0.0.1,端口号默认为:6379。
2、假如本机访问远程IP为132.1.114.44的计算机,则首先要在已经安装了Redis的远程计算机上打开其服务器,redis.server.exe

3、接下来在本机运行redis.cli.exe,也可以通过命令行实现:输入-h 远程计算机IP -p 6379即可连接:

4、接下来如果想用自己写的客户端什么的连接远程Redis数据库也只需要输入远程计算机的IP就可以了。

参考技术A   在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) (.Net SqlClient Data Provider)

  这次的解决办法:

  开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务"在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动。本回答被提问者和网友采纳

以上是关于如何在Redis通过StackExchange.Redis 存储集合类型List的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CentOS 7 上安装 Redis 服务器

Redis如何通过本机客户端访问远程服务器段

如何在 CentOS 7 上安装 Redis 服务器

如何在 CentOS 7 上安装 Redis 服务器

如何在redis配置文件中查看redis版本

如何在redis配置masterName