.Net Core下 Redis的String Hash List Set和Sorted Set的例子
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的例子的更多相关文章
- .net core下Redis帮助类
0.引入.net core环境下Redis的NuGet包,StackExchange.Redis,现目前最新的2.0.519. 帮助类Code: using System; using Syste ...
- Redis学习-string数据类型
Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志 型.Key-Value 数据库. redis提供五种数据类型string,hash,list,set及sor ...
- Redis应用场景 及其数据对象 string hash list set sortedset
原文地址:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html Redis开创了一种新的数据存储思路,使用Redis,我们不用在 ...
- redis数据类型[string 、list 、 set 、sorted set 、hash]
1. Keys redis本质上一个key-value db,所以我们首先来看看他的key. 首先key也是字符串类型,但是key中不能包括边界字符:由于key不是binary safe的字符串, ...
- 第一节: Redis之String类型和Hash类型的介绍和案例应用
一. String类型基础 1.类型介绍 典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下. 2. 指令Api说明 3.常用Api说明 (1).StringS ...
- Redis的String、Hash类型命令
String是最简单的类型,一个Key对应一个Value,string类型是二进制安全的.Redis的string可以包含任何数据,比如jpg图片或者序列化的对象.最大上限是1G字节. Hash ...
- Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
原文:Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty public class NullToEmptyStringResolver : De ...
- .net core 下使用StackExchange的Redis库访问超时解决
原文:.net core 下使用StackExchange的Redis库访问超时解决 目录 问题:并发稍微多的情况下Redis偶尔返回超时 给出了参考网址? 结论 小备注 引用链接 问题:并发稍微多的 ...
- Python(Redis 中 String/List/Hash 类型数据操作)
1.下载 redis 模块 pip install redis 2.redis 数据库两种连接方式 简单连接 decode_responses=True,写入和读取的键值对中的 value 为 str ...
随机推荐
- Codeforces Round #410 (Div. 2)
Codeforces Round #410 (Div. 2) A B略..A没判本来就是回文WA了一次gg C.Mike and gcd problem 题意:一个序列每次可以把\(a_i, a_{i ...
- CodeChef Chef and Churu [分块]
题意: 单点修改$a$ 询问$a$的区间和$f$的区间和 原来普通计算机是这道题改编的吧... 对$f$分块,预处理$c[i][j]$为块i中$a_j$出现几次,$O(NH(N))$,只要每个块差分加 ...
- CodeChef Sereja and Game [DP 概率 博弈论]
https://www.codechef.com/problems/SEAGM 题意: n个数(可能存在相同的数),双方轮流取数.如果在一方选取之后,所有已选取数字的GCD变为1,则此方输.问:1 若 ...
- 小笔记:Timer定时间隔时间操作
小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...
- SSE图像算法优化系列十七:一些图像处理中常用小过程的SSE实现。
在做图像处理的SSE优化时,也会经常遇到一些小的过程.数值优化等代码,本文分享一些个人收藏或实现的代码片段给大家. 一.快速求对数运算 对数运算在图像处理中也是个经常会遇到的过程,特备是在一些数据压缩 ...
- JDBCTemplate与模板设计方法(二)
前言:上一篇博客介绍了模板方法模式,并且给出了一个小demo,简单对模板方法进行了实现,接下来我们把目光转向spring的源码JDBCTemplate,看一看spring是如何对jdbc进行高度封装的 ...
- Linux一些常用操作
1.linux swap分区 可采用文件的方式 dd if=/dev/zero of=/var/swap bs=1024 count=2048000 mkswap /var/swap swapon / ...
- windows 如何编译 Openssl ?
windows 如何编译 Openssl ? 编译环境 VS2015 Openssl 1.0.2 ActivePerl 5.24.3 x64 编译步骤 安装 ActivePerl 期间,勾选添加至环境 ...
- uva140
全排列回溯剪枝. 题目数据很水.记录当前最小带宽,边回溯边计算当前序列最大的距离(也就是带宽),如果当前带宽超过了当前的最小带宽就剪枝. 注意下,数据读入时的字符串处理. AC代码 #include& ...
- HDU - 1172
思路:假设答案是x,那么x必定满足所有语句给定的条件.例如3585和4815就有2个相同的数,1和相同的位. 只要这个数满足所有条件,那么就是一个可能的答案,当答案数量超过1个时,就是"No ...