164 lines
4.5 KiB
C#
164 lines
4.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Caching.Distributed;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using NewLife.Caching;
|
|
using NewLife.Redis.Extensions;
|
|
using Xunit;
|
|
|
|
namespace XUnitTest
|
|
{
|
|
public class RedisCacheTests
|
|
{
|
|
public readonly ServiceProvider provider;
|
|
private static readonly string prefix = "myPrefix:";
|
|
public RedisCacheTests()
|
|
{
|
|
var services = new ServiceCollection();
|
|
services.AddDistributedRedisCache(options =>
|
|
{
|
|
options.Server = "127.0.0.1";
|
|
options.Db = 9;
|
|
options.Prefix = prefix;
|
|
});
|
|
provider = services.BuildServiceProvider();
|
|
}
|
|
|
|
[Fact]
|
|
public void Get()
|
|
{
|
|
var key = "key1";
|
|
var value = Encoding.UTF8.GetBytes("value1");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
cache.Set(key, value, null);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetAsync()
|
|
{
|
|
var key = "key2";
|
|
var value = Encoding.UTF8.GetBytes("value2");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
await cache.SetAsync(key, value, null);
|
|
|
|
var rs = await cache.GetAsync(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public void Set()
|
|
{
|
|
var key = "key3";
|
|
var value = Encoding.UTF8.GetBytes("value3");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
cache.Set(key, value, null);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task SetAsync()
|
|
{
|
|
var key = "key4";
|
|
var value = Encoding.UTF8.GetBytes("value4");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
await cache.SetAsync(key, value, null);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public void Set_With_Options()
|
|
{
|
|
var key = "key5";
|
|
var value = Encoding.UTF8.GetBytes("value5");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
var options = new DistributedCacheEntryOptions
|
|
{
|
|
AbsoluteExpiration = DateTime.Now.AddSeconds(30)
|
|
};
|
|
cache.Set(key, value, options);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task SetAsync_With_Options()
|
|
{
|
|
var key = "key6";
|
|
var value = Encoding.UTF8.GetBytes("value6");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
var options = new DistributedCacheEntryOptions
|
|
{
|
|
AbsoluteExpiration = DateTime.Now.AddSeconds(30)
|
|
};
|
|
await cache.SetAsync(key, value, options);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
[Fact]
|
|
public void Set_With_Options_AbsoluteExpirationRelativeToNow()
|
|
{
|
|
var key = "key7";
|
|
var value = Encoding.UTF8.GetBytes("value7");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
var options = new DistributedCacheEntryOptions
|
|
{
|
|
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(30)
|
|
};
|
|
cache.Set(key, value, options);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 测试缓存Key前缀
|
|
/// </summary>
|
|
[Fact]
|
|
public void PrefixTest()
|
|
{
|
|
var key = "key8";
|
|
var value = Encoding.UTF8.GetBytes("value8");
|
|
|
|
var cache = provider.GetService<IDistributedCache>();
|
|
cache.Set(key, value, null);
|
|
|
|
var rs = cache.Get(key);
|
|
Assert.NotNull(rs);
|
|
Assert.Equal(value, rs);
|
|
|
|
var cache2 = provider.GetService<Redis>();
|
|
var rs2 = cache.Get(prefix + key);
|
|
Assert.NotNull(rs2);
|
|
Assert.Equal(value, rs2);
|
|
}
|
|
|
|
}
|
|
}
|