WGShare.API/WGShare.API/Helpers/RedisHelper.cs

51 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}