diff --git a/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCache.cs b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCache.cs
index e508030..061a92a 100644
--- a/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCache.cs
+++ b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCache.cs
@@ -2,14 +2,19 @@
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using Caching.CSRedis;
using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Caching.Redis {
+ ///
+ /// Distributed cache implementation using Redis.
+ ///
public class CSRedisCache : IDistributedCache {
private CSRedis.CSRedisClient _redisClient;
- public CSRedisCache(CSRedis.CSRedisClient redisClient) {
- _redisClient = redisClient;
+ public CSRedisCache(IOptions optionsAccessor) {
+ _redisClient = optionsAccessor.Value.CSRedisClient;
}
// KEYS[1] = = key
// ARGV[1] = absolute-expiration - ticks as long (-1 for none)
diff --git a/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheOptions.cs b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheOptions.cs
new file mode 100644
index 0000000..4ede628
--- /dev/null
+++ b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheOptions.cs
@@ -0,0 +1,22 @@
+using CSRedis;
+using Microsoft.Extensions.Caching.Redis;
+using Microsoft.Extensions.Options;
+
+namespace Caching.CSRedis
+{
+ ///
+ /// Configuration options for .
+ ///
+ public class CSRedisCacheOptions : IOptions
+ {
+ ///
+ /// Redis Client
+ ///
+ public CSRedisClient CSRedisClient { get; set; }
+
+ CSRedisCacheOptions IOptions.Value
+ {
+ get { return this; }
+ }
+ }
+}
diff --git a/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheServiceCollectionExtensions.cs b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheServiceCollectionExtensions.cs
new file mode 100644
index 0000000..4391092
--- /dev/null
+++ b/src/Microsoft.Extensions.Caching.CSRedis/CSRedisCacheServiceCollectionExtensions.cs
@@ -0,0 +1,36 @@
+using Caching.CSRedis;
+using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Redis;
+using System;
+
+namespace Microsoft.Extensions.DependencyInjection
+{
+ public static class CSRedisCacheServiceCollectionExtensions
+ {
+ ///
+ /// Adds Redis distributed caching services to the specified .
+ ///
+ /// The to add services to.
+ /// An to configure the provided
+ /// .
+ /// The so that additional calls can be chained.
+ public static IServiceCollection AddCSRedisCache(this IServiceCollection services, Action setupAction)
+ {
+ if (services == null)
+ {
+ throw new ArgumentNullException(nameof(services));
+ }
+
+ if (setupAction == null)
+ {
+ throw new ArgumentNullException(nameof(setupAction));
+ }
+
+ services.AddOptions();
+ services.Configure(setupAction);
+ services.Add(ServiceDescriptor.Singleton());
+
+ return services;
+ }
+ }
+}
diff --git a/src/Microsoft.Extensions.Caching.CSRedis/Microsoft.Extensions.Caching.CSRedis.csproj b/src/Microsoft.Extensions.Caching.CSRedis/Microsoft.Extensions.Caching.CSRedis.csproj
index 470979b..838bc8c 100644
--- a/src/Microsoft.Extensions.Caching.CSRedis/Microsoft.Extensions.Caching.CSRedis.csproj
+++ b/src/Microsoft.Extensions.Caching.CSRedis/Microsoft.Extensions.Caching.CSRedis.csproj
@@ -30,6 +30,10 @@
+
+
+
+
diff --git a/src/Microsoft.Extensions.Caching.CSRedis/README.md b/src/Microsoft.Extensions.Caching.CSRedis/README.md
index 5119990..f865dfb 100644
--- a/src/Microsoft.Extensions.Caching.CSRedis/README.md
+++ b/src/Microsoft.Extensions.Caching.CSRedis/README.md
@@ -13,7 +13,9 @@
```csharp
var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=13,ssl=false,writeBuffer=10240,poolsize=50,prefix=key前辍");
-services.AddSingleton(new Microsoft.Extensions.Caching.Redis.CSRedisCache(csredis));
+services.AddCSRedisCache(options => {
+ options.CSRedisClient = csredis;
+});
```
# 集群模式