51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using FreeRedis;
|
||
using Masuit.Tools;
|
||
using Newtonsoft.Json;
|
||
|
||
namespace WGShare.API.Helpers
|
||
{
|
||
/// <summary>
|
||
/// redis静态访问类
|
||
/// </summary>
|
||
public abstract class RedisHelper
|
||
{
|
||
private static RedisClient _instance;
|
||
|
||
/// <summary>
|
||
/// redis实例
|
||
/// </summary>
|
||
public static RedisClient Instance
|
||
{
|
||
get
|
||
{
|
||
if (_instance == null)
|
||
{
|
||
throw new Exception("使用前初始化redis静态访问类 RedisHelper.Initialization(new FreeRedis.RedisClient(\"127.0.0.1:6379,password=123,defaultDatabase=13,maxpoolsize=50,prefix=key前辍\"));");
|
||
}
|
||
|
||
return _instance;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 初始化redis静态访问类 RedisHelper.Initialization(new FreeRedis.RedisClient(\"127.0.0.1:6379,password=123,defaultDatabase=13,maxpoolsize=50,prefix=key前辍\"))
|
||
/// </summary>
|
||
/// <param name="redisClient"></param>
|
||
internal static void Initialization(FreeRedis.RedisClient redisClient)
|
||
{
|
||
_instance = redisClient;
|
||
}
|
||
|
||
internal static ThreadLocal<Random> rnd = new ThreadLocal<Random>(() => new Random());
|
||
/// <summary>
|
||
/// 随机秒(防止所有key同一时间过期,雪崩)
|
||
/// </summary>
|
||
/// <param name="minTimeoutSeconds">最小秒数</param>
|
||
/// <param name="maxTimeoutSeconds">最大秒数</param>
|
||
/// <returns></returns>
|
||
public static int RandomExpired(int minTimeoutSeconds, int maxTimeoutSeconds) => rnd.Value.Next(minTimeoutSeconds, maxTimeoutSeconds);
|
||
|
||
}
|
||
}
|