如何连接到Azure Redis缓存

时间:2014-05-11 13:04:29

标签: asp.net redis azure-caching

我正在尝试从Visual Studio Web项目连接到Azure Redis缓存(预览)的实例。

我收到以下错误:"无法加载文件或程序集'用户传递的授权令牌无效"。

我做了以下事情: 1)登录Azure Portal并创建新的 Redis缓存预览 2)打开Visual Studio并创建新项目(Web MVC) 3)管理Nuget包 - 全部更新 4)安装包 - " Windows Azure缓存版本2.2.0.0" 5)打开Web.Config,在dataCacheClients部分中执行以下操作:

<dataCacheClients>
<dataCacheClient name="default">
  <autoDiscover isEnabled="true" identifier="mycache.redis.cache.windows.net"  />
    <securityProperties mode="Message" sslEnabled="false">
    <messageSecurity authorizationInfo="xxxxxxxmykeyxxxxxxxx"/>
  </securityProperties>
</dataCacheClient>
</dataCacheClients>

6)将HomeController.cs更改为以下内容:

using Microsoft.ApplicationServer.Caching;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CacheRedisTest.Controllers
{
public class HomeController : Controller
{
    static DataCacheFactory myFactory;
    static DataCache myCache;
    public ActionResult Index()
    {
        if (myCache == null)
        {
            myFactory = new DataCacheFactory();
            myCache = myFactory.GetDefaultCache();
        }

        return View();
    }
}
}

我是否需要一些特定于Redis的其他nuget包?另外,我在哪里放置Azure控制台中提到的端口号?

感谢您阅读

3 个答案:

答案 0 :(得分:9)

对于Azure Redis缓存,您需要使用RedEx客户端库,如StackExchange.Redis。 &#34; Windows Azure缓存&#34;客户端库特定于Azure托管缓存。

将StackExchange.Redis NuGet包添加到项目后,使用ConnectionMultiplexer对象连接到Redis:

var cm  = ConnectionMultiplexer.Connect("mycache.redis.cache.windows.net,ssl=true,password=<password>");
var db = connection.GetDatabase();

db.StringSet("key", "value");
var key = db.StringGet("key");

链接更多信息:

http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/ https://github.com/StackExchange/StackExchange.Redis

答案 1 :(得分:2)

您不需要在web.config中使用dataCacheClients - 您不希望在源中检查秘密。您可以在MVC控制器中像这样配置它

    public class MoviesController : Controller
   {
      private MovieDBContext db = newMovieDBContext();
      private static ConnectionMultiplexer connection;
      private static ConnectionMultiplexer Connection
      {
         get
         {
            if (connection == null || !connection.IsConnected)
            {
               connection = ConnectionMultiplexer.Connect(
               "<your Cache>.redis.cache.windows.net,ssl=true," +
               "password=<Your password>");
            }
            return connection;
         }
      }

同样,请勿将您的帐户/密码放入源代码中 - 使用  ConfigurationManager.AppSettings [&#34;帐户&#34],        ConfigurationManager.AppSettings [&#34; Password&#34;] - 并将配置选项卡中的值存储在Azure门户中

有关详细信息,请参阅http://azure.microsoft.com/blog/2014/06/05/mvc-movie-app-with-azure-redis-cache-in-15-minutes/

答案 2 :(得分:0)