一、rediscover
Redis是一個基於內存的高性能鍵值對存儲數據庫,支持多種數據結構,例如字符串、哈希、列表、集合、有序集合等。它是一個開源的NoSQL數據庫系統,由Salvatore Sanfilippo開發並維護,使用ANSI C編寫,因此被稱為Redis。
在.NET中,可以使用StackExchange.Redis包來操作Redis數據庫,該包支持異步和同步方法,提供了一個簡單的API,使開發人員能夠輕鬆地與Redis交互。
二、redis持久化
Redis支持兩種持久化方式——RDB和AOF。
RDB是一種快照方式,它將數據庫的當前狀態寫入磁盤。這種方法通常用於定期備份數據庫。可以通過修改Redis配置文件,設置RDB的保存和加載規則,以及備份策略和文件名等。
AOF是將所有執行的寫操作記錄到一個文件中,這個文件可以用來重建數據庫。Redis提供了三種AOF日誌記錄模式,包括always、everysec和no,你可以選擇合適的模式根據你的需要。
三、redis常用命令
using StackExchange.Redis;//連接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//獲取redis數據庫IDatabase db = conn.GetDatabase();//string類型db.StringSet("key","value");string result = db.StringGet("key");//hash類型db.HashSet("hashkey","field","value");string value = db.HashGet("hashkey","field");//list類型db.ListRightPush("listkey","value");string listValue = db.ListRightPop("listkey");//set類型db.SetAdd("setkey","value");bool isMember = db.SetContains("setkey","value");//zset類型db.SortedSetAdd("zsetkey","value",score);double score = db.SortedSetScore("zsetkey","value");
四、redis重啟
在Windows下,可以使用以下命令重啟Redis服務:
redis-cli.exe shutdownredis-server.exe redis.windows.conf
五、redis菜鳥教程
如果你對Redis不太熟悉,可以參考Redis官方提供的菜鳥教程,這是一個非常好的入門教程,包括Redis基礎知識、Redis數據類型、Redis持久化、Redis事務等內容。
鏈接:https://www.runoob.com/redis/redis-tutorial.html
六、redis持久化方式有哪些
Redis提供兩種持久化方式,即RDB和AOF。
RDB是Redis默認的持久化方式,它是在一段時間(例如30分鐘)內,多個寫操作累積到一定數目(例如10000個)時,Redis才會自動執行一次快照備份,保存數據庫當前的數據狀態到磁盤上。
AOF是將Redis服務器執行過的所有寫操作緩存起來,以文本方式保存成日誌文件,這樣當Redis服務器重啟時只需要將這個AOF文件重新執行一遍即可還原整個數據庫。AOF持久化方式可以更加精確地保證數據的一致性和安全性。
七、redis查詢key命令
Redis提供了keys、exists、type等命令,可以用來查詢Redis數據庫中的鍵值信息。
using StackExchange.Redis;//連接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//獲取redis數據庫IDatabase db = conn.GetDatabase();//查詢所有keyvar keys = conn.GetServer("localhost").Keys();//判斷key是否存在bool isExists = db.KeyExists("key");//獲取key的類型RedisType type = db.KeyType("key");
八、redis存放庫存
Redis可以作為一個非常優秀的庫存系統,利用Redis的事務機制和原子操作可以實現高並發、高效、高可用的庫存管理系統。
using StackExchange.Redis;//連接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//獲取redis數據庫IDatabase db = conn.GetDatabase();//庫存數量int stock = 100;//商品編號string productNumber = "product123";//客戶編號string customerid = "customer123";//生成訂單號string orderId = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10000,99999);//開始一個事務var tran = db.CreateTransaction();//獲取庫存數量RedisValue val = tran.StringGetAsync(productNumber).Result;int stockcnt = (int)val;//如果庫存足夠,則減去庫存數量,並且設置訂單if (stockcnt >= 1){ tran.StringDecrementAsync(productNumber, 1); tran.StringSetAsync(orderId, customerid);}//執行事務bool success = tran.Execute();
九、redis常用方法
除了上述常用命令外,Redis還提供了很多方便、實用的方法,例如Lock、Publish、Subscribe、Scan等。
using StackExchange.Redis;//連接redisConnectionMultiplexer conn = ConnectionMultiplexer.Connect("localhost");//獲取redis數據庫IDatabase db = conn.GetDatabase();//Lock鎖定bool islock = db.LockTake("key","value",TimeSpan.FromSeconds(10));if(islock){ //執行鎖定的業務代碼 //... //釋放Lock db.LockRelease("key","value");}//Publish發布消息db.Multiplexer.GetSubscriber().Publish("channel","message");//Subscribe訂閱消息db.Multiplexer.GetSubscriber().Subscribe("channel",(channel,msg) => { Console.WriteLine("channel:" + channel + ";message:" + msg);});//Scan遍曆數據庫var keys = db.Execute("SCAN",0,"MATCH","key*","COUNT",100);foreach(RedisValue key in keys){ Console.WriteLine(key);}
原創文章,作者:VXCG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/145810.html