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目录
   redis目录文件
   2.找到RedisServer.sln项目文件,并打开
  
   redis的vs解决方案文件    
   3.清除项目的安全警告
    vs2017的安全警告     
  4. 修改Windows的sdk和vs版本(默认应该是vs2013,至于sdk版本跟Windows相关)
    在vs2017中修改Windows的sdk版本    
   5. 修改解决方案下的所有项目sdk版本
    修改每个项目的sdk版本
   6. 选择RedisServer项目,直接生成
   
     

简单使用redis客户端

    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