一、DLL安装

    用NuGet搜索StackExchange.Redis,然后下载就可以。

    ConnectionMultiplexer对象是StackExchange.Redis最中枢的对象。这个类的实例需要被整个应用程序域共享和重用的,不要在每个操作中不停的创建该对象的实例,所以使用单例来创建和存放这个对象。

    代码:

     private static ConfigurationOptions configurationOptions = ConfigurationOptions.Parse("127.0.0.1" + ":" + "");
private static readonly object Locker = new object();
     private static ConnectionMultiplexer redisConn; /// <summary>
/// 单例获取
/// </summary>
public static ConnectionMultiplexer RedisConn
{
get
{
if (redisConn == null)
{
lock (Locker)
{
if (redisConn == null || !redisConn.IsConnected)
{
redisConn = ConnectionMultiplexer.Connect(configurationOptions);
}
}
}
return redisConn;
}
}

  IDatabase db = redis.GetDatabase();

 这里的GetDatabase() 返回的db对象是很轻量级别的,不需要被缓存起来,每次用每次取即可。IDatabase 的所有方法都有同步和异步的实现。其中的异步实现都是可以await的。

二、Strings的相关方法

    具体代码:

         var db = conn.GetDatabase();
#region Strings命令
string key = "keyTest1";
//SET命令
db.StringSet(key, "10");
//GET命令
string value = db.StringGet(key);
Console.WriteLine(value);
//APPEND命令
db.StringAppend(key, "10");
value = db.StringGet(key);
Console.WriteLine(value);
//有第二个参数(整数,参看StringIncrement方法)为DECRBY命令
//没有第二个参数为DECR命令
db.StringDecrement(key);
value = db.StringGet(key);
Console.WriteLine(value);
//有第二个参数为INCRBY命令
//没有第二个参数为INCR命令
db.StringIncrement(key, 2);
value = db.StringGet(key);
Console.WriteLine(value);
string key2 = "keyTest";
//SETEX命令,带过期时间
db.StringSet(key2, "keyTest2", new TimeSpan(0, 0, 5));
string value2 = db.StringGet(key2);
Console.WriteLine(value2);
Thread.Sleep(5 * 1000);
//超过5s后,查不到该值
value2 = db.StringGet(key2);
Console.WriteLine("5s later:" + value2);
//GETSET命令,读出原来的值,并附新值
//下面两个是测试
value = db.StringGetSet(key, "2000");
Console.WriteLine(value);
value = db.StringGet(key);
Console.WriteLine(value);
//MSET命令
db.StringSet(new KeyValuePair<RedisKey, RedisValue>[] {
new KeyValuePair<RedisKey, RedisValue>("key1", "value1"),
new KeyValuePair<RedisKey, RedisValue>("key2", "value2"), });
//MGET命令
RedisValue[] values = db.StringGet(new RedisKey[] { "key1", "key2" });
Console.WriteLine(values[0] + "&&" + values[1]);
#endregion

  运行结果:

  

三、Hashes的相关方法

    具体代码:

    

         var db = conn.GetDatabase();
#region Hash命令
string key = "mykey";
//避免key重复
db.KeyDelete(key);
//HSET命令
db.HashSet(key, "a", "1");
//HGET命令
string value = db.HashGet(key, "a");
Console.WriteLine(value);
//HMSET
db.HashSet(key, new HashEntry[] { new HashEntry("b", "2"), new HashEntry("c", "3") });
//HMGET
HashEntry[] values = db.HashGetAll(key);
Console.WriteLine(values[0].Name + "///" + values[0].Value);
//HDEL
db.HashDelete(key, "c");
string valuec = db.HashGet(key, "c");
Console.WriteLine("c:" + valuec);
//HEXISTS
Console.WriteLine(db.HashExists(key, "a"));
#endregion

  运行结果:

四、Lists的相关方法

    具体代码:

    

          var db = conn.GetDatabase();
#region List命令
string key = "mykey";
db.KeyDelete(key);
//LPUSH
long index = db.ListLeftPush(key, "test");
//LINDEX,index返回总的长度,index必须减一
string value = db.ListGetByIndex(key, index - 1);
Console.WriteLine(value);
//LINSTER
long index2 = db.ListInsertAfter(key, "test", "testright");
string value2 = db.ListGetByIndex(key, index2 - 1);
Console.WriteLine(value2);
long index3 = db.ListInsertBefore(key, "test", "testleft");
string value3 = db.ListGetByIndex(key, index - 1);
//LRANGE
RedisValue[] values = db.ListRange(key);
Console.WriteLine("values:begin");
values.ToList().ForEach((v) =>
{
Console.WriteLine(v);
});
Console.WriteLine("values:end");
//LREM
long index4 = db.ListRemove(key, "test");
values = db.ListRange(key);
Console.WriteLine("values2:begin");
values.ToList().ForEach((v) =>
{
Console.WriteLine(v);
});
Console.WriteLine("values2:end");
//LPOP
string value5 = db.ListLeftPop(key);
Console.WriteLine(value5);
values = db.ListRange(key);
Console.WriteLine("values3:begin");
values.ToList().ForEach((v) =>
{
Console.WriteLine(v);
});
Console.WriteLine("values3:end");
Console.WriteLine(value3);
#endregion

  

    运行结果:

五、最后

    现在只简单学会使用Strings、Hashes和Lists,还有很多以后再研究使用。

Redis 系列 (一) StackExchange.Redis的使用的更多相关文章

  1. Redis系列(一)StackExchange.Redis的使用

    Redis系列(一)StackExchange.Redis的使用 一.DLL安装 用NuGet搜索StackExchange.Redis,然后下载就可以. ConnectionMultiplexer对 ...

  2. 【11】Redis .net 实例 StackExchange.Redis框架

    1.创建测试项目并下载nuget包:StackExchange.Redis PM> Install-Package StackExchange.Redis 2.创建 RedisHelper类 p ...

  3. Redis系列(二):Redis的5种数据结构及其常用命令

    上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...

  4. Redis系列(三):Redis的持久化机制(RDB、AOF)

    本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF. 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. Redis系列(二): ...

  5. Redis系列(四):Redis的复制机制(主从复制)

    本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制. 本系列的前3篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数据 ...

  6. Redis系列(五):Redis的过期键删除策略

    本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...

  7. Java Redis系列2 (redis的安装与使用+redis持久化的实现))

    Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...

  8. Redis集群~StackExchange.redis连接Twemproxy代理服务器

    回到目录 本文是Redis集群系列的一篇文章,主要介绍使用StackExchange.Redis进行Twemproxy(文中简称TW)代理服务的连接过程,事务上,对于TW来说,我们需要理解一下它的物理 ...

  9. Redis学习笔记~StackExchange.Redis实现分布式Session

    回到目录 对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现 ...

随机推荐

  1. MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  2. Android开发工具全面转向Android Studio(1)——准备开发环境

    工欲善其事必先利其器,本文适合Android新手以及用过Eclipse而没用过Android Studio开发Android的老手,众所周知,谷歌是不会再维护和开发ADT了,旧的ADT已经是完全不能渲 ...

  3. Excel2016右键新建工作表,打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。”的解决办法

    上午新建excel工作表时,发现新建完之后居然打不开 提示: 尼玛这坑爹的,难道我的Excel坏了?? 排查问题之后发现 只有新建“Microsoft Excel 工作表”时会出现这种问题,新建“Wo ...

  4. DIV+CSS常用的网页布局代码

    单行一列以下是引用片段:body { margin: 0px; padding: 0px; text-align: center; }#content { margin-left:auto; marg ...

  5. WEB前端开发人员须知的常见浏览器兼容问题及解决技巧

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

  6. arch 安装图形界面

    图形界面的安装.--- 引导: .显卡驱动,这里我们是集成显卡,根据wiki提示安装xf86-video-intel .安装xorg-server,xorg-server-utils,xorg-xin ...

  7. 对象的比较与排序:IComparable和IComparer接口

    IComparable和ICompare 接口是.net framework 中比较对象的标准方式,这两个接口提供一个返回值类似(大于0 等于0 小于0)的比较方法,二者区别如下: . ICompar ...

  8. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  9. 类Collections的静态方法

    类Collections的静态方法 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. 排序 static <T extends Comparable& ...

  10. Java 第8章 循环结构进阶

    循环结构进阶 什么是二重循环? 二重循环的执行顺序是什么?