asp.net Core使用redis(StackExchange.Redis)
一、構成の追加(appsettings.json)
二、サービス依存の追加(Startup.cs)
三、redisヘルプクラス(RedisHelper)
四、コントローラでの使用
"Redis": {
"Default": {
"Connection": "127.0.0.1:6379,password=12345678",
"InstanceName": " :",
"DefaultDB": 0
}
}
二、サービス依存の追加(Startup.cs)
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//redis
var section = Configuration.GetSection("Redis:Default");
string _connectionString = section.GetSection("Connection").Value;//
string _instanceName = section.GetSection("InstanceName").Value; //
int _defaultDB = int.Parse(section.GetSection("DefaultDB").Value ?? "0"); //
services.AddSingleton(new RedisHelper(_connectionString, _instanceName, _defaultDB));
}
三、redisヘルプクラス(RedisHelper)
public class RedisHelper : IDisposable
{
private string _connectionString; //
private string _instanceName; //
private int _defaultDB; //
private ConcurrentDictionary _connections;
public RedisHelper(string connectionString, string instanceName, int defaultDB =0)
{
_connectionString = connectionString;
_instanceName = instanceName;
_defaultDB = defaultDB;
_connections = new ConcurrentDictionary();
}
///
/// ConnectionMultiplexer
///
///
private ConnectionMultiplexer GetConnect()
{
return _connections.GetOrAdd(_instanceName, p => ConnectionMultiplexer.Connect(_connectionString));
}
///
///
///
///
/// 0: db , config
///
public IDatabase GetDatabase()
{
return GetConnect().GetDatabase(_defaultDB);
}
public IServer GetServer(string configName = null, int endPointsIndex = 0)
{
var confOption = ConfigurationOptions.Parse(_connectionString);
return GetConnect().GetServer(confOption.EndPoints[endPointsIndex]);
}
public ISubscriber GetSubscriber(string configName = null)
{
return GetConnect().GetSubscriber();
}
public void Dispose()
{
if (_connections != null && _connections.Count > 0)
{
foreach (var item in _connections.Values)
{
item.Close();
}
}
}
四、コントローラでの使用
public class RedisController : Controller
{
private readonly IDatabase _redis;
public RedisController(RedisHelper client)
{
_redis = client.GetDatabase();
}
public IActionResult Index()
{
_redis.StringSet("TestRedis", "11111");
string temp = _redis.StringGet("TestRedis");
return View();
}
}