一、安装类库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;
}