redis在Windows编译及c#使用
起因
一哥们最近准备换工作,便想学习redis,便说Windows上有没有redis呀,我就说有呀,redis官方是不提供Windows版本,微软在opentech提供了redis的github地址. redis(Windows)GitHub下载地址:https://github.com/MSOpenTech/Redis
redis(中文站点,文档/客户端/下载):http://www.redis.cn/
Windows编译redis
1.解压redis-3.0文件,并打开msvs目录
2.找到RedisServer.sln项目文件,并打开

3.清除项目的安全警告

4. 修改Windows的sdk和vs版本(默认应该是vs2013,至于sdk版本跟Windows相关)

5. 修改解决方案下的所有项目sdk版本

6. 选择RedisServer项目,直接生成

简单使用redis客户端

上图,主要是几个命令分别如下:
set/get [key] [value] :set是将数据存放到redis中,要指定key,因为获取的时候要用到. get是获取数据的命令
incr/decr [key] :incr是指定key的值自增加1,decr是指定key的值自减1
更多命令,可以参考redis文档:http://www.redis.cn/documentation.html
redis客户端
1.redis支持很多语言的客户端
2. 选择c#的客户端

c#使用redis
using System;
using System.IO;
using StackExchange.Redis;
namespace RedisApp
{
class Program
{
/// <summary>
/// redis客户端对象,跟该对象进行数据操作
/// </summary>
static IDatabase client;
/// <summary>
/// 连接服务端,ConnectionMultiplexer内部有自己的机制,不必每次创建一个,可以单例模式
/// </summary>
static void Connection()
{
try
{
var conn = ConnectionMultiplexer.Connect("127.0.0.1:6379");
client = conn.GetDatabase();
}
catch (Exception ex)
{
Log(ex.ToString());
Environment.Exit(0);
}
}
/// <summary>
/// 简单记录日志
/// </summary>
/// <param name="msg"></param>
static void Log(string msg)
{
string filePath = string.Format("{0}{1}log", Directory.GetCurrentDirectory(), Path.DirectorySeparatorChar);
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string fileName = string.Format("{0}{1}log-{2}.txt", filePath, Path.DirectorySeparatorChar, DateTime.Now.ToString("yyyyMMdd"));
File.AppendAllText(fileName, string.Format("{0} {1}", msg, Environment.NewLine));
}
static void Main(string[] args)
{
Connection();
//根据key判断是否存在
var isExistsKey = client.KeyExists("hello");
if (isExistsKey)
{
client.KeyDelete("hello");
Console.WriteLine("delete hello");
}
//根据key在redis中添加数据,并设置过期时间
var result = client.StringSet("hello", "world", TimeSpan.FromMinutes(30));
if (result)
{
//根据key获取值
var val = client.StringGet("hello");
Console.WriteLine($"key:hello value:{val}");
}
Console.ReadKey();
}
}
}
秋风
2017-05-30