.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 ...
随机推荐
- oracle表中字段的添加、删除
在oracle数据库中为一张表添加一个字段: alter table tableName add ClIENT_OS varchar2(20) default '0' not null ; 在orac ...
- 51NOD 1584 加权约数和 [莫比乌斯反演 转化 Trick]
1584 加权约数和 题意:求\(\sum_{i=1}^{N} \sum_{j=1}^{N} {\max(i,j)\cdot \sigma(i\cdot j)}\) 多组数据\(n \le 10^6, ...
- 夏令营讲课内容整理Day 1.
主要内容是栈和队列. 1. 栈 运算受到限制的线性表.只允许从一端进行插入和删除等操作.这一端便是栈顶,另一端便是栈底. 其实可以把栈想象层任何有底无盖的柱状的容器...毕竟栈满足后进先出的特性.计 ...
- JAVAEE——BOS物流项目05:OCUpload、POI、pinyin4J、重构分页代码、分区添加、combobox
1 学习计划 1.实现区域导入功能 n OCUpload一键上传插件使用 n 将文件上传到Action n POI简介 n 使用POI解析Excel文件 n 完成数据库操作 n 使用pinyin4J生 ...
- pandas读取各类sql数据源
大数据分析中,我们经常需要使用pandas工具读取各类数据源并将结果保存到数据库中. 本文总结了一些读取和写入常用数据库数据的一些方法,包括mysql,oracle,impala等. 其中读取数据库数 ...
- Access denied for user 'root'@'localhost' (using password: YES)的解决
今天使用phpmyadmin登录远程数据库所以改了一些配置,结果回过头来登录本地mysql时来了一句mysql Access denied for user 'root'@'localhost' (u ...
- 使用 Homebrew 安装 Git
3.2.3 使用 Homebrew 安装 Git 2011-07-27 08:52 蒋鑫 机械工业出版社 字号:T | T 综合评级: 想读(13) 在读(6) 已读(8) 品书斋鉴(1) ...
- (一)《Maven实战》读书笔记 —— Maven简介
第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个个颇为成功的开源项 ...
- 基于gmap.net制作离线地图下载器
网上已有大量文章介绍gamp.net和离线下载相关的文章了.我就不在介绍gmap相关的文章了,这里着重介绍一下下载相关原理.其实gmap.net本身已自带下载工能,只是离线图片下载到sqlit中,现将 ...
- Redis Sentinel 高可用服务搭建
阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...