zoukankan      html  css  js  c++  java
  • C# Redis安装 使用教程

    前言:lz自打工作以来第一次遇到电脑问题需要重装系统,全盘格式化。打击是沉痛的。特别伤。  然后需要重新在本地部署 redis。这是写这篇博客的原因。希望对大家有所帮助,安装资源和引用DLL可以引用   只用于学习     ( windows环境安装  )

     一:安装Redis

    首先我们需要在本地或是服务器安装Redis。安装包可以去redis官网下载,去Gethub上down  我这里直接给我的百度云  

    链接:https://pan.baidu.com/s/1WJ48XMaHOmgb1J0KaQkdEw 密码:xjf4  下载后解压

     本地的话 你可以直接打开 redis-server.exe这个应用程序。也可以打开cmd命令 然后把路径换成你redis文件的路径  我的是放在 c: edis   可以跟我的来,方便搬运代码   切换文件路径  cd

     

    然后我们启动redis服务,运行  redis-server.exe redis.windows.conf

    出现这个界面说明OK了,这个窗口别关  如果关闭了  重新来一遍

    继续,再打开一个cmd窗口,切换到redis目录下面

    这里解释一下这个 127.0.0.1  是本地访问,相当于localhost  6379是redis默认的端口  

     继续,redis是存储键值对的所以我们测试一下

    set一个 key value

    get  一个key

    机制就是把数据set  到 redis的数据库里,就是我们说的缓存 用的时候在get取值

    接下来我们下载一个redis可视化工具,作用是相当于我们平时使用的数据库  可以去官网上下载,可以我直接上资源,方便   链接:https://pan.baidu.com/s/1K7QtxSVV_15kxP8zkEvIng  密码:k4f8

    解压文件,安装成功  打开 

    字面意思,很简单吧  

    name  测试阶段随便写   HOST呢  就是主机IP地址  链接上之后  打开我们的DB

    crtest666  wuchen  这个键值队是成功添加了的 (关于redis  key是名字无所谓  value可以是列表,集合,自由使用,今天先不讲这个)

     二:C# 中使用redis(查找,增加,删除的使用)

    首先我们需要添加redis的引用。nuget包 搜索redis第一个就是。--StackExchange.Redis 

    根据运行的环境不同。还需要以下dll 

        1.ServiceStack.Common.dll

      2.ServiceStack.Interfaces.dll

      3.ServiceStack.Text.dll

     可以去Gethub上去down, https://github.com/ServiceStack/ServiceStack.Redis       真的慢

    博主百度云资源: 链接:https://pan.baidu.com/s/1gQLJlIcHhZtPikIgFHnHxA  密码:scqt

    Lg:本博一直用win10,按理说只需要这些DLL的   现在装成win7,发现不行了  后来我在Nuget包中添加 RedisHelper,(现在好像直接叫做Redis了,看下备注说明确认一下)

    这里举个很简单的使用redis的例子

    添加一个控制台应用程序

    然后在主程序类  program.cs 代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace crtest
    {
        class Program
        {
            /// <summary>
            /// 基无尘 18-8-31
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Console.WriteLine("Redis写入缓存:wuchengtest"); //添加
    
                RedisCacheHelper.Add("wuchen", "jiwuchen", DateTime.Now.AddDays(1));
    
                Console.WriteLine("Redis获取缓存:crtest666");//查找
                string str3 = RedisCacheHelper.Get<string>("crtest666");
                Console.WriteLine(str3);
    
                RedisCacheHelper.Remove("hellow");//删除
                string str = RedisCacheHelper.Get<string>("hellow");//查看是否删除成功
                Console.WriteLine(str == null ? "未找到" : str);
                Console.ReadKey();
            }
        }
    }

    然后添加一个帮助类  作用类似于我们常用的DbHelper 

    using ServiceStack.Redis;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace crtest
    {
       public  class RedisCacheHelper
        {
            private static readonly PooledRedisClientManager pool = null;
            private static readonly string[] redisHosts = null;
            public static int RedisMaxReadPool = 3;
            public static int RedisMaxWritePool = 1;
    
            static RedisCacheHelper()
            {
                var redisHostStr = "127.0.0.1:6379";
    
                if (!string.IsNullOrEmpty(redisHostStr))
                {
                    redisHosts = redisHostStr.Split(',');
    
                    if (redisHosts.Length > 0)
                    {
                        pool = new PooledRedisClientManager(redisHosts, redisHosts,
                            new RedisClientManagerConfig()
                            {
                                MaxWritePoolSize = RedisMaxWritePool,
                                MaxReadPoolSize = RedisMaxReadPool,
                                AutoStart = true
                            });
                    }
                }
            }
    
            #region Add
            public static void Add<T>(string key, T value, DateTime expiry)
            {
                if (value == null)
                {
                    return;
                }
    
                if (expiry <= DateTime.Now)
                {
    
                    Remove(key);
    
                    return;
                }
    
                try
                {
                    if (pool != null)
                    {
                        using (var r = pool.GetClient())
                        {
                            if (r != null)
                            {
                                r.SendTimeout = 1000;
                                r.Set(key, value, expiry - DateTime.Now);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "存储", key);
                }
    
            }
    
    
            public static void Add<T>(string key, T value, TimeSpan slidingExpiration)
            {
                if (value == null)
                {
                    return;
                }
    
                if (slidingExpiration.TotalSeconds <= 0)
                {
                    Remove(key);
    
                    return;
                }
    
                try
                {
                    if (pool != null)
                    {
                        using (var r = pool.GetClient())
                        {
                            if (r != null)
                            {
                                r.SendTimeout = 1000;
                                r.Set(key, value, slidingExpiration);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "存储", key);
                }
            }
    
            public static T Get<T>(string key)
            {
                if (string.IsNullOrEmpty(key))
                {
                    return default(T);
                }
    
                T obj = default(T);
    
                try
                {
                    if (pool != null)
                    {
                        using (var r = pool.GetClient())
                        {
                            if (r != null)
                            {
                                r.SendTimeout = 1000;
                                obj = r.Get<T>(key);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "获取", key);
                }
    
    
                return obj;
            }
            #endregion
    
            public static void Remove(string key)
            {
                try
                {
                    if (pool != null)
                    {
                        using (var r = pool.GetClient())
                        {
                            if (r != null)
                            {
                                r.SendTimeout = 1000;
                                r.Remove(key);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "删除", key);
                }
    
            }
    
            public static bool Exists(string key)
            {
                try
                {
                    if (pool != null)
                    {
                        using (var r = pool.GetClient())
                        {
                            if (r != null)
                            {
                                r.SendTimeout = 1000;
                                return r.ContainsKey(key);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string msg = string.Format("{0}:{1}发生异常!{2}", "cache", "是否存在", key);
                }
    
                return false;
            }
        }
    }

    OK,生成一下   然后运行看看效果

     

    OK,我们去redis-server上看看效果,也可以用上面的控制台来get 看看效果(cmd命令窗口自始至终都是开着的)

    可以看到是成功添加的。好啦

    通过简单的两句代码,慢慢发现编程的乐趣

  • 相关阅读:
    GNOME on Arch Linux
    忽然想通不喜欢搞前端的原因
    可以一时气馁,不能放弃
    Hack语言类型化简介
    标榜
    Hack其实是一门好语言
    Focus
    PHP旧系统基于命名空间重构经验
    少即是多的设计
    IDDD 实现领域驱动设计-一个简单的 CQRS 示例
  • 原文地址:https://www.cnblogs.com/cr-cool/p/9565690.html
Copyright © 2011-2022 走看看