一、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. X64操作系统组件Jmail无法正常服务问题

    故障现象: 近日,在VMware虚拟化部署迁移中,之前物理服务器中部署网站ASP组件Jmail服务一切正常,迁移完成后发现Jmail无法正常工作,其余组件能正常工作. 环境:Windows Serve ...

  2. Word论文写作如何实现公式居中、编号右对齐

    第一步:插入表格 在公式所在行居中插入一行三列的表格,具体操作为: a.设置行居中,快捷键Ctrl+E: b.插入->表格->3×1的表格: 2 第二步:修改表格属性 新插入的表格三列等宽 ...

  3. HTML和CSS设置动态导航以及CSS中伪元素的简单说明

    HTML页面代码: <!DOCTYPE html> <html> <head> <title>Test</title> <meta c ...

  4. IplImage 结构解读

    IplImage 结构解读: typedef struct _IplImage { int nSize;                              /* IplImage大小,等于wi ...

  5. break continue.

    1.break与continue.这两个关键字一般放在循环的花括号里面使用.break——结束整个循环.continue——结束本次循环,进入下次循环. 2.while循环 //初始条件 while( ...

  6. apache和nginx开启https

    1.安装mod_ssl和openssl yum -y install mod_ssl openssl 2.建立服务器密钥 mkdir /etc/httpd/conf.d/ssl.key/ cd /et ...

  7. Python 第五天 装饰器

    装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. def wrapper(func): def result(): pri ...

  8. Hadoop streaming模式获取jobconf参数

    1. 像map_input_file这种环境变量是在hadoop-streaming.jar程序中设置的,所以无需-cmdenv map_input_file参数就可以在php中直接引用,如$var= ...

  9. Win7 64位 VS2015环境编译Libpng

    第3次编译Libpng依然想不起任何东西,为了不浪费第4次的时间... http://libmng.com/pub/png/libpng.html http://www.zlib.net/ 解压两个压 ...

  10. POJ 2096 Collecting Bugs (概率DP)

    题意:给定 n 类bug,和 s 个子系统,每天可以找出一个bug,求找出 n 类型的bug,并且 s 个都至少有一个的期望是多少. 析:应该是一个很简单的概率DP,dp[i][j] 表示已经从 j ...