Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >.Net Core下 Redis的String Hash List Set和Sorted Set的例子

.Net Core下 Redis的String Hash List Set和Sorted Set的例子

作者头像
码农阿宇
发布于 2018-04-18 07:13:55
发布于 2018-04-18 07:13:55
1.2K00
代码可运行
举报
文章被收录于专栏:码农阿宇码农阿宇
运行总次数:0
代码可运行

1.新建一个.Net Core控制台应用程序,用Nuget导入驱动

打开程序包管理控制台,

执行以下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PM> Install-Package ServiceStack.Redis

即可添加Redis的引用。

2.StringDemo

String类型是最常用的数据类型,在Redis中以KKey/Value存储。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;
using ServiceStack.Text;

namespace RedisDotNetDemo
{
    class StringDemo
    {
        public static void Start()
        {
            var redisMangement = new RedisManagerPool("127.0.0.1:6379");
            var client = redisMangement.GetClient();

            client.Set<int>("pwd", 111);                       //普通字符串
            int pwd = client.Get<int>("pwd");
            Console.WriteLine(pwd);
            var todoTools = client.As<Todo>();
            Todo todo=new Todo(){Content = "123",Id =todoTools.GetNextSequence(),Order = 1};
            client.Set<Todo>("todo", todo);                    //object
            Todo getTodo = client.Get<Todo>("todo");
            Console.WriteLine(getTodo.Content);

            List<Todo> list=new List<Todo>(){new Todo(){Content = "123"},new Todo(){Content = "234"}};      //List<Object>

            client.Set("list", list);
            List<Todo> getList = client.Get<List<Todo>>("list");

            foreach (var VARIABLE in getList)
            {
                Console.WriteLine(VARIABLE.Content);
            }
            Console.ReadLine();
        }
    }
    class Todo
    {
        public long Id { get; set; }
        public string Content { get; set; }
        public int Order { get; set; }
        public bool Done { get; set; }
    }
}

3.HashDemo

如何,Hash在Redis采用 (HashId,Key,Value)进行存储

一个HashId 可以包含多个key,一个key对应着一个value

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;

namespace RedisDotNetDemo
{
    class HashDemo
    {
        public static void Start()
        {
            var redisMangement = new RedisManagerPool("127.0.0.1:6379");
            var client = redisMangement.GetClient();
            client.SetEntryInHash("test", "123", "aaaaa");                       //存储一次数据  test是hashid,123是key,aaaa是value
            List<string> listKeys = client.GetHashKeys("test");                  //获取test哈希下的所有key
            Console.WriteLine("keys in test");
            foreach (var VARIABLE in listKeys)
            {
                Console.WriteLine(VARIABLE);
            }
            List<string> listValue = client.GetHashValues("test");             //获取test哈希下的所有值
            Console.WriteLine("test 里的所有值");
            foreach (var VARIABLE in listValue)
            {
                Console.WriteLine(VARIABLE);
            }
            string value = client.GetValueFromHash("test", listKeys[0]);      //获取test哈希下,第一个Key对应的值
            Console.WriteLine("test 下的key"+listKeys[0]+"对应的值"+value);

        }
    }
}

4.ListDemo

list是一个链表结构,key可以理解为链表的名字,然后往这个名字所对应的链表里加值。,list可以以队/栈的形式进行工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;

namespace RedisDotNetDemo
{
    class ListDemo
    {   
        public static void Start()
        {
            var redisMangement = new RedisManagerPool("127.0.0.1:6379");
            var client = redisMangement.GetClient();

            //队列的使用   //先进先出
            client.EnqueueItemOnList("name","zhangsan");   //入列
            client.EnqueueItemOnList("name","lisi");       //入列
            long count = client.GetListCount("name");
            for (int i = 0; i < count; i++)
            {
                Console.WriteLine(client.DequeueItemFromList("name"));   //出列
            }


            //栈的使用 //先进后出
            client.PushItemToList("name2","wangwu");          //推入
            client.PushItemToList("name2","maliu");           //推入
            long count2 = client.GetListCount("name2");
            for (int i = 0; i < count2; i++)
            {
                Console.WriteLine(client.PopItemFromList("name2"));   //弹出
            }
        }
    }
}

5 SetDemo

它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找,对集合我们可以取并集,交集,差集.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;

namespace RedisDotNetDemo
{
    class SetDemo
    {//它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找,对集合我们可以取并集,交集,差集.
        public static void Start()
        {
            var redisMangement = new RedisManagerPool("127.0.0.1:6379");
            var client = redisMangement.GetClient();
            //对Set类型进行操作

            client.AddItemToSet("a3", "ddd");
            client.AddItemToSet("a3", "ccc");
            client.AddItemToSet("a3", "tttt");
            client.AddItemToSet("a3", "sssh");
            client.AddItemToSet("a3", "hhhh");

            HashSet<string> hashSet = client.GetAllItemsFromSet("a3");
            foreach (var VARIABLE in hashSet)
            {
                Console.WriteLine(VARIABLE);
            }

            //求并集
            client.AddItemToSet("a4", "hhhh");
            client.AddItemToSet("a4", "h777");
            HashSet<string> hashSetUnion = client.GetUnionFromSets(new string[] {"a3", "a4"});
            Console.WriteLine("并集");
            foreach (var VARIABLE in hashSetUnion)
            {
                Console.WriteLine(VARIABLE);
            }

            //求交集
            HashSet<string> hashsetInter = client.GetIntersectFromSets(new string[] { "a3","a4" });
            Console.WriteLine("交集");
            foreach (var VARIABLE in hashsetInter)
            {
                Console.WriteLine(VARIABLE);
            }
            //求差集
            HashSet<string> hashsetDifference = client.GetDifferencesFromSet("a3", new string[] { "a4" });
            Console.WriteLine("差集");
            foreach (var VARIABLE in hashsetDifference)
            {
                Console.WriteLine(VARIABLE);
            }
        }
    }
}

6.SortedSetDemo

SortedSet我只知道它相较于Set,它是有序的,而Set是无需的,而且用户还可以调整SortedSet中value的位置,至于具体怎么在.Net环境下调整,暂时没有学会,就不在此班门弄斧,给出一个SortedDemo的存和取得例子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Text;
using ServiceStack.Redis;

namespace RedisDotNetDemo
{
    //区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。
    //当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构, 
    class SortedSetDemo
    {
        public static void Start()
        {
            var redisMangement = new RedisManagerPool("127.0.0.1:6379");
            var client = redisMangement.GetClient();
            client.AddItemToSortedSet("a5", "ffff");
            client.AddItemToSortedSet("a5", "bbbb");
            client.AddItemToSortedSet("a5", "gggg");
            client.AddItemToSortedSet("a5", "cccc");
            client.AddItemToSortedSet("a5", "waaa");
            System.Collections.Generic.List<string> list = client.GetAllItemsFromSortedSet("a5");
            foreach (string str in list)
            {
                Console.WriteLine(str);
            }
        }
    }
}

以上是我对Redis中几种数据类型得用法得总结,如有不对得地方,欢迎大家批评指正。

GitHub代码地址:https://github.com/liuzhenyulive/RedisDotNetDemo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-12-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式中使用Redis实现Session共享(一)
用户1168362
2018/01/05
2.3K0
分布式中使用Redis实现Session共享(一)
NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
  首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库。目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis
Edison Zhou
2018/08/20
4140
NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介
ASP.NET Core微服务(六)——【redis操作】
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
红目香薰
2022/11/28
6510
.Net Core使用Redis的一个入门简单Demo
本例子讲述一个在.Net core环境中对Redis数据库进行增删改查操作。 首先,要安装好Redis数据库,至于怎么安装,本文不再赘述,可以自行百度,有很详细的教程。 安装好之后,在CMD中输入
码农阿宇
2018/04/18
8110
.Net Core使用Redis的一个入门简单Demo
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
红目香薰
2022/11/30
8820
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
Redis从入门到精通(二)C#中使用redis及封装Redis工具类
上一篇讲述了安装redis《Redis总结(一)Redis安装》,同时也大致介绍了redis的优势和应用场景。本篇着重讲解.NET中如何使用redis和C#。
架构师精进
2020/05/24
10.3K0
ServiceStack.Redis 使用教程
环境准备 Redis (使用Windows版本做测试,运营环境建议使用Linux版本) ServiceStack.Redis-v3.00 在Windows上运行Redis服务器作开发和测试是很好的,但
张善友
2018/01/19
1.5K0
ServiceStack.Redis 使用教程
Redis缓存服务搭建及实现数据读写
发现博客园中好多大牛在介绍自己的开源项目是很少用到缓存,比如Memcached、Redis、mongodb等,今天得空抽时间把Redis缓存研究了一下,写下来总结一下,跟大家一起分享 一下。由于小弟水平有限又是第一次接触Redis,有些的不对的地方欢迎指出纠正。
写代码的猿
2019/04/11
6790
Redis缓存服务搭建及实现数据读写
教你写个简单的 Redis Client 框架 - .NET Core
最近叶老板写了个 FreeRedis,刚好前段时间在学习 Redis,于是跟风试试也写一个简单的 RedisClient。目前 FreeRedis 处于初级阶段,需要更多人的参与、测试,有兴趣大家一起参与贡献:
痴者工良
2021/04/26
1.3K0
全网最完整的Redis入门指导
本文提供全网最完整的Redis入门指导教程,下面我们从下载Redis安装包开始,一步一步的学习使用。
Kiba518
2020/06/16
9350
用.Net Core控制台模拟一个ASP.Net Core的管道模型
在我的上几篇文章中降到了asp.net core的管道模型,为了更清楚地理解asp.net core的管道,再网上学习了.Net Core控制台应用程序对其的模拟,以加深映像,同时,供大家学习参考。
码农阿宇
2018/04/18
6210
用.Net Core控制台模拟一个ASP.Net Core的管道模型
asp.net core 上使用redis探索(3)--redis示例demo
由于是基于.net-core平台,所以,我们最好是基于IDistributedCache接口来实现。ASP.NET-CORE下的官方redis客户端实现是基于StackExchange的。但是官方提供的IDistributeCache接口中的方法只是增删改查,我们可以继续拓展,增加订阅/发布,消息队列,当然这些方法必须是基于底层的StackExchange相对应的方法来做的。 如果我们要实现自己的Redis客户端,同时不使用底层的StackExchange驱动,可以派生一个继承自IDistributedCache的接口,定义自己需要的方法,例如:
Ryan_OVO
2023/10/19
3080
C# 语言程序设计笔记
C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。他是从C和C++派生而来的,其与C/C++语法非常相似,并依附于.NET虚拟机的强大类库支持,各方面对强于C/C++.
王瑞MVP
2022/12/28
3.9K0
C# Redis的五大数据结构相关操作及应用场景
下面额代码类均是通过 ServiceStack.Redis 来对Redis进行各种操作
明志德道
2023/10/21
6820
C#   Redis的五大数据结构相关操作及应用场景
C#进行Redis操作
由于一些程序是用.net来写的,刚好要访问以前的redis库,于是就找一些redis的.net客户端。
sparkexpert
2022/05/07
3610
C#进行Redis操作
Redis客户端ServiceStack.Redis的简单使用
在nuget中下载ServiceStack.Redis,但是运行之后会出现一个问题:
Ryan_OVO
2023/10/18
5180
C# 静态与动态数组
C#中的数组是由System.Array类衍生出来的引用对象,因此可以使用Array类中的各种方法对数组进行各种操作。
王瑞MVP
2022/12/28
1.7K0
C# 通过ServiceStack 操作Redis——Set类型的使用及示例
ServiceStack 程序集里面没有方法注解,我在这里将注解添加上去,有不当之处,欢迎指正
明志德道
2023/10/21
2350
C# 通过ServiceStack 操作Redis——Set类型的使用及示例
c# List去重
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141341.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/24
1.6K0
.net core 使用Redis的发布订阅
Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心。接下来介绍一下.net core 使用Redis的发布/订阅功能。 Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的通道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 clie
晓晨
2018/06/22
1.4K0
相关推荐
分布式中使用Redis实现Session共享(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验