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

打开程序包管理控制台,

执行以下代码。

PM> Install-Package ServiceStack.Redis

即可添加Redis的引用。

2.StringDemo

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

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

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可以以队/栈的形式进行工作。

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实现的,添加,删除和查找,对集合我们可以取并集,交集,差集.

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的存和取得例子。

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

.Net Core下 Redis的String Hash List Set和Sorted Set的例子的更多相关文章

  1. .net core下Redis帮助类

      0.引入.net core环境下Redis的NuGet包,StackExchange.Redis,现目前最新的2.0.519. 帮助类Code: using System; using Syste ...

  2. Redis学习-string数据类型

    Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志 型.Key-Value 数据库. redis提供五种数据类型string,hash,list,set及sor ...

  3. Redis应用场景 及其数据对象 string hash list set sortedset

    原文地址:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html Redis开创了一种新的数据存储思路,使用Redis,我们不用在 ...

  4. redis数据类型[string 、list 、 set 、sorted set 、hash]

    1. Keys  redis本质上一个key-value db,所以我们首先来看看他的key.  首先key也是字符串类型,但是key中不能包括边界字符:由于key不是binary safe的字符串, ...

  5. 第一节: Redis之String类型和Hash类型的介绍和案例应用

    一. String类型基础 1.类型介绍 典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下. 2. 指令Api说明 3.常用Api说明 (1).StringS ...

  6. Redis的String、Hash类型命令

    String是最简单的类型,一个Key对应一个Value,string类型是二进制安全的.Redis的string可以包含任何数据,比如jpg图片或者序列化的对象.最大上限是1G字节.    Hash ...

  7. Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty

    原文:Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty public class NullToEmptyStringResolver : De ...

  8. .net core 下使用StackExchange的Redis库访问超时解决

    原文:.net core 下使用StackExchange的Redis库访问超时解决 目录 问题:并发稍微多的情况下Redis偶尔返回超时 给出了参考网址? 结论 小备注 引用链接 问题:并发稍微多的 ...

  9. Python(Redis 中 String/List/Hash 类型数据操作)

    1.下载 redis 模块 pip install redis 2.redis 数据库两种连接方式 简单连接 decode_responses=True,写入和读取的键值对中的 value 为 str ...

随机推荐

  1. Codeforces Round #410 (Div. 2)

    Codeforces Round #410 (Div. 2) A B略..A没判本来就是回文WA了一次gg C.Mike and gcd problem 题意:一个序列每次可以把\(a_i, a_{i ...

  2. CodeChef Chef and Churu [分块]

    题意: 单点修改$a$ 询问$a$的区间和$f$的区间和 原来普通计算机是这道题改编的吧... 对$f$分块,预处理$c[i][j]$为块i中$a_j$出现几次,$O(NH(N))$,只要每个块差分加 ...

  3. CodeChef Sereja and Game [DP 概率 博弈论]

    https://www.codechef.com/problems/SEAGM 题意: n个数(可能存在相同的数),双方轮流取数.如果在一方选取之后,所有已选取数字的GCD变为1,则此方输.问:1 若 ...

  4. 小笔记:Timer定时间隔时间操作

    小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...

  5. SSE图像算法优化系列十七:一些图像处理中常用小过程的SSE实现。

    在做图像处理的SSE优化时,也会经常遇到一些小的过程.数值优化等代码,本文分享一些个人收藏或实现的代码片段给大家. 一.快速求对数运算 对数运算在图像处理中也是个经常会遇到的过程,特备是在一些数据压缩 ...

  6. JDBCTemplate与模板设计方法(二)

    前言:上一篇博客介绍了模板方法模式,并且给出了一个小demo,简单对模板方法进行了实现,接下来我们把目光转向spring的源码JDBCTemplate,看一看spring是如何对jdbc进行高度封装的 ...

  7. Linux一些常用操作

    1.linux swap分区 可采用文件的方式 dd if=/dev/zero of=/var/swap bs=1024 count=2048000 mkswap /var/swap swapon / ...

  8. windows 如何编译 Openssl ?

    windows 如何编译 Openssl ? 编译环境 VS2015 Openssl 1.0.2 ActivePerl 5.24.3 x64 编译步骤 安装 ActivePerl 期间,勾选添加至环境 ...

  9. uva140

    全排列回溯剪枝. 题目数据很水.记录当前最小带宽,边回溯边计算当前序列最大的距离(也就是带宽),如果当前带宽超过了当前的最小带宽就剪枝. 注意下,数据读入时的字符串处理. AC代码 #include& ...

  10. HDU - 1172

    思路:假设答案是x,那么x必定满足所有语句给定的条件.例如3585和4815就有2个相同的数,1和相同的位. 只要这个数满足所有条件,那么就是一个可能的答案,当答案数量超过1个时,就是"No ...