Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions EasyCaching.sln
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.PerformanceTest
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.CSRedis", "src\EasyCaching.CSRedis\EasyCaching.CSRedis.csproj", "{6584761E-E51C-408F-BE51-CA0F6269589B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyCaching.Bus.CSRedis", "src\EasyCaching.Bus.CSRedis\EasyCaching.Bus.CSRedis.csproj", "{861E5373-BEF6-4AA2-92C7-8F4941A079E7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -133,6 +135,10 @@ Global
{6584761E-E51C-408F-BE51-CA0F6269589B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6584761E-E51C-408F-BE51-CA0F6269589B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6584761E-E51C-408F-BE51-CA0F6269589B}.Release|Any CPU.Build.0 = Release|Any CPU
{861E5373-BEF6-4AA2-92C7-8F4941A079E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{861E5373-BEF6-4AA2-92C7-8F4941A079E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{861E5373-BEF6-4AA2-92C7-8F4941A079E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{861E5373-BEF6-4AA2-92C7-8F4941A079E7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{CE61FAA2-0233-451C-991D-4222ED61C84B} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
Expand All @@ -155,5 +161,6 @@ Global
{2A8D7103-DF64-47B6-A406-8F8559AF7E7F} = {EBB55F65-7D07-4281-8D5E-7B0CA88E1AD0}
{6EBE36A2-F128-4C63-B90A-B700D8C2F2E8} = {EBB55F65-7D07-4281-8D5E-7B0CA88E1AD0}
{6584761E-E51C-408F-BE51-CA0F6269589B} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
{861E5373-BEF6-4AA2-92C7-8F4941A079E7} = {A0F5CC7E-155F-4726-8DEB-E966950B3FE9}
EndGlobalSection
EndGlobal
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2017-2018 CatcherWong
Copyright (c) .NET Core Community and Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
37 changes: 20 additions & 17 deletions build/releasenotes.props
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
<Project>
<PropertyGroup>
<EasyCachingCorePackageNotes>
1. EasyCaching Bus
2. HybridCaching
<EasyCachingCorePackageNotes>
1. HybridCaching add RemoveByPrefix/RemoveByPrefixAsync
2. Add Bus Section Const value.
</EasyCachingCorePackageNotes>
<EasyCachingMemcachedPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingMemcachedPackageNotes>
<EasyCachingRedisPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingRedisPackageNotes>
<EasyCachingSQLitePackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
2. Update Default name of provider.
</EasyCachingSQLitePackageNotes>
<EasyCachingInMemoryPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingInMemoryPackageNotes>
<EasyCachingHybridPackageNotes>
1. Refactor.
1. HybridCaching add RemoveByPrefix/RemoveByPrefixAsync
</EasyCachingHybridPackageNotes>
<EasyCachingAspectCorePackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingAspectCorePackageNotes>
<EasyCachingCastlePackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingCastlePackageNotes>
<EasyCachingResponseCachingPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingResponseCachingPackageNotes>
<EasyCachingJsonPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingJsonPackageNotes>
<EasyCachingMessagePackPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingMessagePackPackageNotes>
<EasyCachingProtobufPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingProtobufPackageNotes>
<EasyCachingCSRedisPackageNotes>
1. Adjust reference namespace.
1. Update EasyCaching.Core.
</EasyCachingCSRedisPackageNotes>
<EasyCachingRedisBusPackageNotes>
1. Init.
1. Modify the default section name.
2. Update EasyCaching.Core.
</EasyCachingRedisBusPackageNotes>
<EasyCachingRabbitBusPackageNotes>
1. Init.
1. Fixed Options Bug.
2. Fixed Queue Bind Bug.
</EasyCachingRabbitBusPackageNotes>
</PropertyGroup>
</Project>
31 changes: 16 additions & 15 deletions build/version.props
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
<Project>
<PropertyGroup>
<EasyCachingCorePackageVersion>0.5.0</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>0.5.0</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>0.5.0</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>0.5.0</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>0.5.0</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>0.5.0</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>0.5.0</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>0.5.0</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>0.5.0</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>0.5.0</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>0.5.0</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>0.5.0</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>0.5.0</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>0.5.0</EasyCachingRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>0.5.0-alpha</EasyCachingRabbitBusPackageVersion>
<EasyCachingCorePackageVersion>0.5.1</EasyCachingCorePackageVersion>
<EasyCachingMemcachedPackageVersion>0.5.1</EasyCachingMemcachedPackageVersion>
<EasyCachingRedisPackageVersion>0.5.1</EasyCachingRedisPackageVersion>
<EasyCachingSQLitePackageVersion>0.5.1</EasyCachingSQLitePackageVersion>
<EasyCachingInMemoryPackageVersion>0.5.1</EasyCachingInMemoryPackageVersion>
<EasyCachingHybridPackageVersion>0.5.1</EasyCachingHybridPackageVersion>
<EasyCachingAspectCorePackageVersion>0.5.1</EasyCachingAspectCorePackageVersion>
<EasyCachingCastlePackageVersion>0.5.1</EasyCachingCastlePackageVersion>
<EasyCachingResponseCachingPackageVersion>0.5.1</EasyCachingResponseCachingPackageVersion>
<EasyCachingJsonPackageVersion>0.5.1</EasyCachingJsonPackageVersion>
<EasyCachingMessagePackPackageVersion>0.5.1</EasyCachingMessagePackPackageVersion>
<EasyCachingProtobufPackageVersion>0.5.1</EasyCachingProtobufPackageVersion>
<EasyCachingCSRedisPackageVersion>0.5.1</EasyCachingCSRedisPackageVersion>
<EasyCachingRedisBusPackageVersion>0.5.1</EasyCachingRedisBusPackageVersion>
<EasyCachingCSRedisBusPackageVersion>0.5.1</EasyCachingCSRedisBusPackageVersion>
<EasyCachingRabbitBusPackageVersion>0.5.1.1</EasyCachingRabbitBusPackageVersion>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<ProjectReference Include="..\..\src\EasyCaching.HybridCache\EasyCaching.HybridCache.csproj" />
<ProjectReference Include="..\..\src\EasyCaching.Serialization.MessagePack\EasyCaching.Serialization.MessagePack.csproj" />
<ProjectReference Include="..\..\src\EasyCaching.Core\EasyCaching.Core.csproj" />
<ProjectReference Include="..\..\src\EasyCaching.Bus.Redis\EasyCaching.Bus.Redis.csproj" />
</ItemGroup>
<ItemGroup>
<None Remove="easycaching.db" />
Expand Down
23 changes: 23 additions & 0 deletions src/EasyCaching.Bus.CSRedis/Configurations/CSRedisBusOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace EasyCaching.Bus.CSRedis
{
using System;
using System.Collections.Generic;

/// <summary>
/// Redis bus options.
/// </summary>
public class CSRedisBusOptions
{
/// <summary>
/// Gets or sets the node rule.
/// </summary>
/// <value>The node rule.</value>
public Func<string, string> NodeRule { get; set; } = null;

/// <summary>
/// Gets or sets the connection strings.
/// </summary>
/// <value>The connection strings.</value>
public List<string> ConnectionStrings { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
namespace EasyCaching.Bus.CSRedis
{
using System;
using EasyCaching.Core.Bus;
using EasyCaching.Core.Configurations;
using EasyCaching.Core.Serialization;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;

/// <summary>
/// Redis options extension.
/// </summary>
internal sealed class CSRedisOptionsExtension : IEasyCachingOptionsExtension
{
/// <summary>
/// The name.
/// </summary>
private const string _name = "easycachingbus";

/// <summary>
/// The configure.
/// </summary>
private readonly Action<CSRedisBusOptions> _configure;

/// <summary>
/// Initializes a new instance of the <see cref="T:EasyCaching.CSRedis.RedisOptionsExtension"/> class.
/// </summary>
/// <param name="name">Name.</param>
/// <param name="configure">Configure.</param>
public CSRedisOptionsExtension(Action<CSRedisBusOptions> configure)
{
this._configure = configure;
}

/// <summary>
/// Adds the services.
/// </summary>
/// <param name="services">Services.</param>
public void AddServices(IServiceCollection services)
{
services.AddOptions();

services.TryAddSingleton<IEasyCachingSerializer, DefaultBinaryFormatterSerializer>();

services.Configure(_name, _configure);

services.AddSingleton<EasyCachingCSRedisClient>(x =>
{
var optionsMon = x.GetRequiredService<IOptionsMonitor<CSRedisBusOptions>>();
var options = optionsMon.Get(_name);

var conns = options.ConnectionStrings;
var rule = options.NodeRule;

if (conns.Count == 1)
{
var redisClient = new EasyCachingCSRedisClient(_name, conns[0]);
return redisClient;
}
else
{
var redisClient = new EasyCachingCSRedisClient(_name, rule, conns.ToArray());
return redisClient;
}
});

services.AddSingleton<IEasyCachingBus, DefaultCSRedisBus>();
}

/// <summary>
/// Withs the services.
/// </summary>
/// <param name="services">Services.</param>
public void WithServices(IApplicationBuilder services)
{
// Method intentionally left empty.
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
namespace EasyCaching.Bus.CSRedis
{
using System;
using global::CSRedis;

public class EasyCachingCSRedisClient : CSRedisClient
{
private readonly string _name;

public string Name { get { return this._name; } }

public EasyCachingCSRedisClient(string name, string connectionString)
: base(connectionString)
{
this._name = name;
}

public EasyCachingCSRedisClient(string name, Func<string, string> NodeRule, params string[] connectionStrings)
: base(NodeRule, connectionStrings)
{
this._name = name;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
namespace EasyCaching.Bus.CSRedis
{
using System;
using EasyCaching.Core;
using EasyCaching.Core.Configurations;
using Microsoft.Extensions.Configuration;

/// <summary>
/// EasyCaching options extensions.
/// </summary>
public static class EasyCachingOptionsExtensions
{
/// <summary>
/// Withs the redis bus.
/// </summary>
/// <returns>The redis bus.</returns>
/// <param name="options">Options.</param>
/// <param name="configure">Configure.</param>
public static EasyCachingOptions WithCSRedisBus(this EasyCachingOptions options, Action<CSRedisBusOptions> configure)
{
if (configure == null)
{
throw new ArgumentNullException(nameof(configure));
}

options.RegisterExtension(new CSRedisOptionsExtension(configure));
return options;
}

/// <summary>
/// Withs the redis bus.
/// </summary>
/// <returns>The redis bus.</returns>
/// <param name="options">Options.</param>
/// <param name="configuration">Configuration.</param>
/// <param name="sectionName">Section name.</param>
public static EasyCachingOptions WithCSRedisBus(this EasyCachingOptions options, IConfiguration configuration, string sectionName = EasyCachingConstValue.RedisBusSection)
{
var dbConfig = configuration.GetSection(sectionName);
var redisOptions = new CSRedisBusOptions();
dbConfig.Bind(redisOptions);

void configure(CSRedisBusOptions x)
{
x.ConnectionStrings = redisOptions.ConnectionStrings;
}

options.RegisterExtension(new CSRedisOptionsExtension(configure));
return options;
}
}
}
Loading