• 在 .NET项目中使用 Redis(2018.10.16)


    1. 打开NuGet管理器搜索redis,安装:“StackExchange.Redis”

      

    2. 配置 Web.config 文件

      <connectionStrings>
        <add name="connStr" connectionString="mongodb://127.0.0.1:27017/mydb01" />      <!-- 在有些版本里面如果不带上数据库名称会出错 -->
        <add name="redis" connectionString="127.0.0.1"/>          <!-- Redis -->
      </connectionStrings>

    3. 添加 Redis.cs 文件

        public class Redis
        {
            private static readonly string redisConn = ConfigurationManager.ConnectionStrings["redis"].ToString();
    
            #region 常用的数据库
            public static IDatabase Top { get; } = GetDb(0);
            public static IDatabase TopOauth { get; } = GetDb(1);
            public static IDatabase TopService { get; } = GetDb(2);
            #endregion
           /// <summary>
            /// 获取数据库
            /// </summary>
            /// <param name="dbnumber"></param>
            /// <returns></returns>
            public static IDatabase GetDatabase(int dbnumber)
            {
                ConnectionMultiplexer server = ConnectionMultiplexer.Connect(redisConn);
                return server.GetDatabase(dbnumber);
            }
        }
    
        /// <summary>
        /// Redis缓存扩展:保存、获取、删除(不过其实好像没有用到,引用的框架了好像已经带有这个方法了)
        /// </summary>
        public static class RedisExt
        {
            /// <summary>
            /// 保存一个对象(string类型)
            /// </summary>
            /// <param name="cache"></param>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="experation"></param>
            /// <returns></returns>
            public static async Task<bool> SetAsync(this IDatabaseAsync cache, string key, object value,TimeSpan experation)
            {
                return await cache.StringSetAsync(key, JsonConvert.SerializeObject(value), experation);
            }
    
            /// <summary>
            /// 获取一个对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="cache"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static async Task<T> GetTAsync<T>(this IDatabaseAsync cache,string key)
            {
                var value = await cache.StringGetAsync(key).ConfigureAwait(false);
                if(!value.IsNull)
                {
                    return JsonConvert.DeserializeObject<T>(value);
                }
                else
                {
                    return default(T);
                }
            }
    
            /// <summary>
            /// 删除一个对象
            /// </summary>
            /// <param name="cache"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static async Task<bool> DelAsync(this IDatabaseAsync cache,string key)
            {
                return await cache.KeyDeleteAsync(key).ConfigureAwait(false);
            }
        }

    4. Redis 的使用

            public async Task GetCodeAsync(string mobile)
            {
                string id = ObjectId.GenerateNewId().ToString();
                var text = GetRandomString(6);      //验证码
    
                //存储缓存(形式是这种形式,但实际应用不一定要这样用,要灵活运用key的形式)
                await Redis.TopOauth.StringSetAsync($"SMSCODE:{mobile}", text.ToLower(), new TimeSpan(0, 5, 0));
    
                //发送手机验证码
            }
    
            /// <summary>
            /// 生成随机字符串
            /// </summary>
            /// <param name="length"></param>
            /// <returns></returns>
            private static string GetRandomString(int length)
            {
                return Guid.NewGuid().ToString("N").Substring((32 - length), length);
            }

      这里只使用了保存,还有获取和删除,要注意key要对应。

  • 相关阅读:
    实战演习用wse上传下载文件
    [Android疑难杂症]Gallery默认和横竖屏切换选中状态问题(2.3、2.3系统存在)
    [Android疑难杂症]动态改变Background后Padding无效的问题
    Android应用开发提高系列(6)——Activity生命周期
    使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放
    使用Vitamio打造自己的Android万能播放器(8)——细节优化
    Vitamio SDK 2.0 新版发布(20120831)
    [Android]利用runas命令在不root情况下读取data下面的数据
    使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、播放列表)
    SKY IMA800S 驱动下载
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/9798916.html
Copyright © 2020-2023  润新知