This commit is contained in:
454313500@qq.com
2021-03-21 15:51:49 +08:00
parent 646cd16e40
commit dc4429d66c
8 changed files with 194 additions and 4 deletions

View File

@@ -30,7 +30,7 @@ namespace CC.Yi.API.Controllers
public IActionResult GetTest()//查 public IActionResult GetTest()//查
{ {
var data = _studentBll.GetAllEntities().ToList(); var data = _studentBll.GetAllEntities().ToList();
return Content(Common.JsonFactory.JsonToString(data)); return Content(Common.JsonHelper.JsonToString(data));
} }
[HttpGet] [HttpGet]
public IActionResult AddTest()//增 public IActionResult AddTest()//增

View File

@@ -2,6 +2,7 @@
using Autofac; using Autofac;
using Autofac.Extras.DynamicProxy; using Autofac.Extras.DynamicProxy;
using CC.Yi.BLL; using CC.Yi.BLL;
using CC.Yi.Common.Cache;
using CC.Yi.Common.Castle; using CC.Yi.Common.Castle;
using CC.Yi.DAL; using CC.Yi.DAL;
using CC.Yi.IBLL; using CC.Yi.IBLL;
@@ -51,6 +52,11 @@ namespace CC.Yi.API
//<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Autofac //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Autofac
//services.AddScoped(typeof(IBaseDal<>), typeof(BaseDal<>)); //services.AddScoped(typeof(IBaseDal<>), typeof(BaseDal<>));
//services.AddScoped(typeof(IstudentBll), typeof(studentBll)); //services.AddScoped(typeof(IstudentBll), typeof(studentBll));
services.AddSingleton(typeof(ICacheWriter), new RedisCacheService(new Microsoft.Extensions.Caching.Redis.RedisCacheOptions()
{
Configuration = Configuration.GetSection("Cache.ConnectionString").Value,
InstanceName = Configuration.GetSection("Cache.InstanceName").Value
}));
} }
//<2F><>̬ <20><><EFBFBD><EFBFBD>AOP˼<50><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2> Autofac //<2F><>̬ <20><><EFBFBD><EFBFBD>AOP˼<50><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2> Autofac
@@ -59,7 +65,6 @@ namespace CC.Yi.API
builder.RegisterType(typeof(CustomAutofacAop)); builder.RegisterType(typeof(CustomAutofacAop));
builder.RegisterGeneric(typeof(BaseDal<>)).As(typeof(IBaseDal<>)) ; builder.RegisterGeneric(typeof(BaseDal<>)).As(typeof(IBaseDal<>)) ;
builder.RegisterType<studentBll>().As<IstudentBll>().EnableInterfaceInterceptors();//<2F><>ʾע<CABE><D7A2>ǰ<EFBFBD><C7B0>Ҫִ<D2AA><D6B4>Castle builder.RegisterType<studentBll>().As<IstudentBll>().EnableInterfaceInterceptors();//<2F><>ʾע<CABE><D7A2>ǰ<EFBFBD><C7B0>Ҫִ<D2AA><D6B4>Castle
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

View File

@@ -7,6 +7,10 @@
} }
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"Cache": {
"InstanceName": "Redis",
"ConnectionString": "127.0.0.1:12345,password=123456"
},
"ConnectionStringBySQL": "server=.;Database=cctest;UId=sa;PWD=Qz52013142020.", "ConnectionStringBySQL": "server=.;Database=cctest;UId=sa;PWD=Qz52013142020.",
"ConnectionStringByMySQL": "Data Source=.;Database=cctest;User ID=root;Password=Qz52013142020.;pooling=true;port=3306;sslmode=none;CharSet=utf8;" "ConnectionStringByMySQL": "Data Source=.;Database=cctest;User ID=root;Password=Qz52013142020.;pooling=true;port=3306;sslmode=none;CharSet=utf8;"
} }

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
@@ -7,6 +7,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.0" /> <PackageReference Include="Autofac.Extras.DynamicProxy" Version="6.0.0" />
<PackageReference Include="Castle.Core" Version="4.4.1" /> <PackageReference Include="Castle.Core" Version="4.4.1" />
<PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup> </ItemGroup>

View File

@@ -0,0 +1,53 @@
using Autofac;
using System;
using System.Collections.Generic;
using System.Text;
namespace CC.Yi.Common.Cache
{
public class CacheHelper
{
public static ICacheWriter CacheWriter { get; set; }
static CacheHelper()
{
//这里存在一些问题
ContainerBuilder containerBuilder = new ContainerBuilder();
IContainer container = containerBuilder.Build();
CacheHelper.CacheWriter = container.Resolve<ICacheWriter>();
}
public static void AddCache(string key, string value, int expDate)
{
CacheWriter.Add(key, value, expDate);
}
//没有过期参数,表示用不过期
public static void AddCache(string key, string value)
{
CacheWriter.Add(key, value);
}
public static object GetCache(string key)
{
return CacheWriter.Get(key);
}
public static void SetCache(string key, string value, int expDate)
{
CacheWriter.Replace(key, value, expDate);
}
//没有过期参数,表示用不过期
public static void SetCache(string key, string value)
{
CacheWriter.Replace(key, value);
}
public static void Remove(string key)
{
CacheWriter.Remove(key);
}
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CC.Yi.Common.Cache
{
public interface ICacheWriter
{
//void AddCache(string key, object value, DateTime expDate);
//void AddCache(string key, object value);
//object GetCache(string key);
//T GetCache<T>(string key);
//void SetCache(string key, object value, DateTime expDate);
//void SetCache(string key, object value);
//bool Delete(string key);
string Get(string key);
string GetString(string key);
void AddString(string key, string value);
void Add(string key, string value, int ExpirationTime = 20);
void Remove(string key);
void Replace(string key, string value, int ExpirationTime = 20);
}
}

View File

@@ -0,0 +1,96 @@
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Redis;
using System;
using System.Collections.Generic;
using System.Text;
namespace CC.Yi.Common.Cache
{
public class RedisCacheService :ICacheWriter
{
private RedisCache _redisCache = null;
public RedisCacheService(RedisCacheOptions options)
{
_redisCache = new RedisCache(options);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <returns></returns>
public string Get(string key)
{
try
{
if (!string.IsNullOrEmpty(key))
{
return Encoding.UTF8.GetString(_redisCache.Get(key));
}
else
{
return string.Empty;
}
}
catch
{
return null;
}
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <param name="value">缓存值</param>
/// <param name="ExpirationTime">绝对过期时间(分钟)</param>
public void Add(string key, string value, int ExpirationTime = 20)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime)
});
}
}
public void AddString(string key, string value)
{
_redisCache.SetString(key, value);
}
public string GetString(string key)
{
return _redisCache.GetString(key);
}
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="key">缓存key</param>
public void Remove(string key)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Remove(key);
}
}
/// <summary>
/// 更新缓存
/// </summary>
/// <param name="key">缓存key</param>
/// <param name="value">缓存值</param>
/// <param name="ExpirationTime"></param>
public void Replace(string key, string value, int ExpirationTime = 20)
{
if (!string.IsNullOrEmpty(key))
{
_redisCache.Remove(key);
_redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions()
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime)
});
}
}
}
}

View File

@@ -2,7 +2,7 @@
namespace CC.Yi.Common namespace CC.Yi.Common
{ {
public static class JsonFactory public static class JsonHelper
{ {
public static string JsonToString(object q) public static string JsonToString(object q)
{ {