asp.net webapi使用redis

一、安装类库StackExchange.Redis.StrongN# 一、安装类库StackExchange.Redis.StrongNianame

可以同步Nuget工具安装StackExchange.Redis.StrongName类库

二、构建Redis操作工具类

using System;

using System.Configuration;

using StackExchange.Redis;



namespace FD.Framework.Helpers

{

    public static class StackExchangeRedisHelper

    {

        // 127.0.0.1:6379

        private static readonly string conn = 
ConfigurationManager.ConnectionStrings["RedisExchangeHosts"].ConnectionString;

        private static object _locker = new Object();

        private static ConnectionMultiplexer _instance = null;



        /// <summary>

        /// 使用一个静态属性来返回已连接的实例,如下列中所示。这样,一旦 
ConnectionMultiplexer 断开连接,便可以初始化新的连接实例。

        /// </summary>

        public static ConnectionMultiplexer Instance

        {

            get

            {

                if (_instance == null)

                {

                    lock (_locker)

                    {

                        if (_instance == null || !_instance.IsConnected)

                        {

                            _instance = ConnectionMultiplexer.Connect(conn);

                        }

                    }

                }



                return _instance;

            }

        }



        /// <summary>

        /// 获取Redis数据库连接

        /// </summary>

        /// <returns></returns>

        public static IDatabase GetDatabase()

        {

            return Instance.GetDatabase();

        }

    }

}


该工具类基于网上找的代码简化而来,只保留了数据库连接对象,便于对redis库进行操作

三、web.config添加配置

在connectionStrings节点添加子节点

<add name="RedisExchangeHosts" connectionString="127.0.0.1:6379" />

由于api服务器和redis服务器处于同一局域网,这里的数据连接配置比较简单

四、简单使用redis

key的定义原则:系统-模块-方法-参数

例如:我打算在CMS系统中缓存微信公众号获取用户接口返回的数据
我可以定义key=“CMS:WXGZH:GETUSERINFO:OPENID”这里的OPENID为具体的字符串,前面的不变。

缓存的简单使用

1、判断key是否存在
2、如果存在,直接获取key对应的值
3、否则,调用相关接口获取数据,并保存数据到redis

var key = "ITSP:WXGZH:GETUSERINFO:" + openid;

if (redisDB.KeyExists(key))

{

    string value = redisDB.StringGet(key);

    var dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(value);

    return dic;

}

else

{

    string paramString = string.Format("access_token={0}&openid={1}&lang=zh_CN", 
access_token, openid);

    var res = WebServerHelper.HttpGet(userApi, paramString);

    var dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(res);

    if (!dic.ContainsKey("errcode"))

    {

        redisDB.StringSet(key, JsonConvert.SerializeObject(dic),  
TimeSpan.FromHours(1));

    }

    return dic;

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值