C#中如何使用redis
redis 是一個非關(guān)系型高性能的key-value數(shù)據(jù)庫。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
下面介紹下,在C#中如何使用redis
1、引用 StackExchange.Redis
2、redis 工具類
public class RedisHelper { private static ConnectionMultiplexer multiplexer { get; set; } static RedisHelper() { } public static IDatabase GetDataBase(int dbNums = 1) { if (multiplexer == null) Init(); return multiplexer.GetDatabase(dbNums); } public static ConnectionMultiplexer GetMultiplexer() { if (multiplexer == null) Init(); return multiplexer; } public static bool IsConnect(string key, IDatabase redisDb, string module, string action) { if (!redisDb.IsConnected(key)) { LogHelper.Error("current redis is not connect", null, module, action); return false; } return true; } private static void Init() { try { var configString = ConfigurationManager.AppSettings["RedisConfigString"]; ConfigurationOptions options = ConfigurationOptions.Parse(configString); multiplexer = ConnectionMultiplexer.Connect(options); } catch (Exception ex) { LogHelper.Error(ex, "RedisHelper", "Static"); } } }
3、常用操作
IDatabase _cacheClient = RedisHelper.GetDataBase(4); //key是否存在 _cacheClient.KeyExists("key") //設(shè)置key-vaule _cacheClient.StringSet("key", "value"); //設(shè)置過期時間 _cacheClient.KeyExpire("key", TimeSpan.FromMinutes(1)); //刪除 _cacheClient.KeyDelete("key");
4、redis 雖然也可以做消息隊列,實(shí)現(xiàn)也簡單,但弊端同樣明顯,不推薦
//發(fā)布 ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer(); ISubscriber sub = multiplexer.GetSubscriber(); var queue = sub.Publish("channel name", "message"); //訂閱 ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer(); ISubscriber sub = multiplexer.GetSubscriber(); sub.Subscribe("channel name", (channel, message) => { //TODO });
5、計數(shù)器,用于秒殺、搶購控庫存
//取值,不存在則初始為0 long num = _cacheClient.StringIncrement("key", 0) //判斷,比如和緩存里的商品總庫存比較 //計數(shù)增加 _cacheClient.StringIncrement("key", 2)
以上就是C#中如何使用redis的詳細(xì)內(nèi)容,更多關(guān)于C#使用redis的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#使用Directoryinfo類獲得目錄信息和屬性的方法
這篇文章主要介紹了C#使用Directoryinfo類獲得目錄信息和屬性的方法,涉及C#操作目錄的技巧,非常具有實(shí)用價值,需要的朋友可以參考下2015-04-04C# Onnx CenterNet實(shí)現(xiàn)目標(biāo)檢測的示例詳解
這篇文章主要為大家詳細(xì)介紹了C# Onnx CenterNet實(shí)現(xiàn)目標(biāo)檢測的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放
在WPF里用MediaElement控件,實(shí)現(xiàn)一個循環(huán)播放單一視頻的程序,同時可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧2018-04-04