Redis在.net中的使用(2).net專案中的Redis使用
Redis在.net中的使用(2).net專案中的Redis使用
Redis官網提供了很多開源的C#客戶端:Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等。其中ServiceStack.Redis應該算是比較流行的。它提供了一整套從Redis資料結構都強型別物件轉換的機制並將物件json序列化。所以這裡只介紹ServiceStack.Redis,它也是目前產品中經常使用的客戶端。
1、新建控制檯程式(略過)
2、新增ServiceStack.Redis,可以使用nuget新增,我這裡直接演示,用的以前的lib包
3、建立一個簡單的RedisCacheHelper操作類
public class RedisCacheHelper { private static readonly PooledRedisClientManager pool = null; private static readonly string[] redisHosts = null; public static int RedisMaxReadPool = int.Parse(ConfigurationManager.AppSettings["redis_max_read_pool"]); public static int RedisMaxWritePool = int.Parse(ConfigurationManager.AppSettings["redis_max_write_pool"]); static RedisCacheHelper() { var redisHostStr = ConfigurationManager.AppSettings["redis_server_session"]; if (!string.IsNullOrEmpty(redisHostStr)) { redisHosts = redisHostStr.Split(','); if (redisHosts.Length > 0) { pool = new PooledRedisClientManager(redisHosts, redisHosts, new RedisClientManagerConfig() { MaxWritePoolSize = RedisMaxWritePool, MaxReadPoolSize = RedisMaxReadPool, AutoStart = true }); } } } public static void Add<T>(string key, T value, DateTime expiry) { if (value == null) { return; } if (expiry <= DateTime.Now) { Remove(key); return; } try { if (pool != null) { using (var r = pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; r.Set(key, value, expiry - DateTime.Now); } } } } catch (Exception ex) { string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "儲存", key); } } public static void Add<T>(string key, T value, TimeSpan slidingExpiration) { if (value == null) { return; } if (slidingExpiration.TotalSeconds <= 0) { Remove(key); return; } try { if (pool != null) { using (var r = pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; r.Set(key, value, slidingExpiration); } } } } catch (Exception ex) { string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "儲存", key); } } public static T Get<T>(string key) { if (string.IsNullOrEmpty(key)) { return default(T); } T obj = default(T); try { if (pool != null) { using (var r = pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; obj = r.Get<T>(key); } } } } catch (Exception ex) { string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "獲取", key); } return obj; } public static void Remove(string key) { try { if (pool != null) { using (var r = pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; r.Remove(key); } } } } catch (Exception ex) { string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "刪除", key); } } public static bool Exists(string key) { try { if (pool != null) { using (var r = pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; return r.ContainsKey(key); } } } } catch (Exception ex) { string msg = string.Format("{0}:{1}發生異常!{2}", "cache", "是否存在", key); } return false; } }4、專案配置檔案
<appSettings> <add key="SessionExpireMinutes" value="180" /> <add key="redis_server_session" value="127.0.0.1:6379" /> <add key="redis_max_read_pool" value="3" /> <add key="redis_max_write_pool" value="1" /> </appSettings>5、簡單測試,注意要保證redis服務處於啟動狀態
由請喊我大龍哥最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- Redis在.net中的使用(5)Redis持久化Redis持久化
- Redis在.net中的使用(6)Redis併發鎖Redis
- Redis在.net中的使用(1)下載安裝RedisRedis
- Redis在.net中的使用(7)redis部署為Windows服務RedisWindows
- Redis在.net中的使用(3)簡單的主從複製Redis
- Redis在.net中的使用(4)常見的集中資料結構Redis資料結構
- C#中使用Redis學習二 在.NET4.5中使用redis hash操作C#Redis
- .Net專案中NLog的配置與使用
- Redis在專案中合理使用經驗總結Redis
- 在.net Core中使用StackExchange.Redis 2.0Redis
- .Net使用Redis詳解之ServiceStack.RedisRedis
- PetaPoco在.net專案中的簡單使用(儲存過程篇)儲存過程
- LiteDB在.NET中如何使用
- Redis在遊戲業務中的使用Redis遊戲
- Redis的安裝及在Java中的使用RedisJava
- Redis 哨兵使用以及在 Laravel 中的配置RedisLaravel
- goalng中net/rpc的使用GoRPC
- Redis在Web專案中的應用與實踐RedisWeb
- Redis 在 Web 專案中的應用與實踐RedisWeb
- .net core 專案使用log4net
- 使用CefSharp在.NET中嵌入Google kernelGo
- jwt-在asp.net core中的使用jwtJWTASP.NET
- Redis 中 HyperLogLog 的使用場景Redis
- Redis 中 BitMap 的使用場景Redis
- Redis 中 Keys 與 Scan 的使用Redis
- .net 專案使用 JSON SchemaJSON
- Redis in .NET Core 入門:(2) StringRedis
- 在專案中如何用Redis分散式鎖Redis分散式
- .NET 專案中的單元測試
- .NET Core(.NET6)中gRPC使用RPC
- 在.NET 6中使用DateOnly和TimeOnly
- C#ASP.Net Core 5.0 使用StackExchange.RedisC#ASP.NETRedis
- .net core使用CSRedisCore訪問Redis主從+哨兵Redis
- Redis中的原子操作(2)-redis中使用Lua指令碼保證命令原子性Redis指令碼
- JWT 在專案中的實際使用JWT
- bing Map 在vue專案中的使用Vue
- spring boot中redis使用Spring BootRedis
- .NET Core 中AutoMapper的配置及使用APP