Как подключиться к Azure Redis Cache
Я пытаюсь подключиться к экземпляру кэша Redis Azure (предварительный просмотр) из веб-проекта Visual Studio.
Я получаю следующую ошибку: "Не удалось загрузить файл или сборку" Токен авторизации передан пользователем недействительным ".
Я сделал следующее: 1) вошел в портал Azure и создал новый Redis Cache PREVIEW 2) открыл Visual Studio и создал новый проект (Web MVC) 3) управлял пакетами Nuget - обновлял все 4) установочный пакет - "версия Windows Azure Cache" 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();
}
}
}
Нужны ли какие-то другие пакеты nuget, относящиеся к Redis? Кроме того, где я могу указать номер порта, который указан в консоли Azure?
Спасибо за прочтение
3 ответа
Для Azure Redis Cache вам необходимо использовать клиентскую библиотеку Redis, например StackExchange.Redis. Клиентская библиотека "Windows Azure Cache" относится к управляемому кэшу Azure.
После добавления пакета Nucket StackExchange.Redis в проект подключитесь к Redis с помощью объекта ConnectionMultiplexer:
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
Вам не нужны dataCacheClients в вашем web.config - вы не захотите проверять секрет в своем источнике. Вы бы настроили это так в контроллере 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["Account"], ConfigurationManager.AppSettings["Password"] - и сохраните значения на вкладке "Настройка" на портале Azure.
Для получения дополнительной информации см. http://azure.microsoft.com/blog/2014/06/05/mvc-movie-app-with-azure-redis-cache-in-15-minutes/
Вот статья "Как использовать Redis Cache" - http://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/