using CSRedis; using Newtonsoft.Json; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using WIDESEA_Core.Configuration; using WIDESEA_Core.Const; namespace WIDESEA_Core.CacheManager { public class RedisCacheService : ICacheService { public RedisCacheService() { var csredis = new CSRedisClient(AppSetting.RedisConnectionString); RedisHelper.Initialization(csredis); } /// <summary> /// 验è¯ç¼“å˜é¡¹æ˜¯å¦å˜åœ¨ /// </summary> /// <param name="key">缓å˜Key</param> /// <returns></returns> public bool Exists(string key) { if (key == null) { throw new ArgumentNullException(nameof(key)); } return RedisHelper.Exists(key); } public void LPush(string key, string val) { RedisHelper.LPush(key, val); } public void RPush(string key, string val) { RedisHelper.RPush(key, val); } public T ListDequeue<T>(string key) where T : class { string value = RedisHelper.RPop(key); if (string.IsNullOrEmpty(value)) return null; return JsonConvert.DeserializeObject<T>(value); } public object ListDequeue(string key) { string value = RedisHelper.RPop(key); if (string.IsNullOrEmpty(value)) return null; return value; } /// <summary> /// 移除listä¸çš„æ•°æ®ï¼ŒkeepIndex为ä¿ç•™çš„ä½ç½®åˆ°æœ€åŽä¸€ä¸ªå…ƒç´ 如list å…ƒç´ ä¸º1.2.3.....100 /// 需è¦ç§»é™¤å‰3个数,keepindex应该为4 /// </summary> /// <param name="key"></param> /// <param name="keepIndex"></param> public void ListRemove(string key, int keepIndex) { RedisHelper.LTrim(key, keepIndex, -1); } public bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false) { return RedisHelper.Set(key, value, expireSeconds); } public bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false) { return RedisHelper.Set(key, value, expireSeconds); } /// <summary> /// åˆ é™¤ç¼“å˜ /// </summary> /// <param name="key">缓å˜Key</param> /// <returns></returns> public bool Remove(string key) { RedisHelper.Del(key); return true; } /// <summary> /// 批é‡åˆ é™¤ç¼“å˜ /// </summary> /// <param name="key">缓å˜Key集åˆ</param> /// <returns></returns> public void RemoveAll(IEnumerable<string> keys) { RedisHelper.Del(keys.ToArray()); } /// <summary> /// 获å–ç¼“å˜ /// </summary> /// <param name="key">缓å˜Key</param> /// <returns></returns> public T Get<T>(string key) where T : class { return RedisHelper.Get<T>(key); } /// <summary> /// 获å–ç¼“å˜ /// </summary> /// <param name="key">缓å˜Key</param> /// <returns></returns> public string Get(string key) { return RedisHelper.Get(key); } public void Dispose() { } } }