初探Redis-基礎型別String
Redis存在五種基礎型別:字串(String)、佇列(List)、雜湊(Hash)、集合(Set)、有序集合(Sorted Set)。String的出鏡率算是最高的。本次列舉出String的常用操作。
Redis官網:https://redis.io/
一、字串(String)介紹
字串(String)是Redis 中最基本的型別,一個 key 對應著一個 value,可以理解為字典型別,key-value形式。該型別二進位制安全的,對應值可以儲存任何資料,如圖片或者序列化後的物件,對應值最大可以儲存 512MB
的資料。但不是建議去最大化儲存,儲存資料儘量小為最佳使用。從操作出發,常用操作為這兩類:
- 儲存和操作字串;
- 儲存和計算int和float型別的資料。
二、字串(String)常用Api
- 設定值
eg:設定30秒生存時間,且必須firstkey不存在。
- 獲取值
eg:
- 批量設定值與批量獲取值
eg:
- 遞增或遞減值(△1)
eg:
- 遞增或遞減值(△n)
eg:
- 遞增浮點數值(△n)
eg:
- 獲取舊值並設定新值
eg:
三、字串(Strng)不常用Api
- 追加值
eg:
- 查詢key
eg:
- 刪除key
eg:
- 設定剩餘生存時間
eg:設定firstkey生存時間30秒,並通過ttl檢視剩餘生存時間。
- 獲取剩餘生存時間
eg:
- 設定永久生存
eg:
- 獲取字串長度
eg:
- 覆蓋指定位置開始處的字元
eg:
- 獲取指定位置範圍字串
eg:
四、字串(String)簡單應用場景
模擬限量商品秒殺場景,來運用一下redis。採用多執行緒隨機請求限量商品,並且用redis控制商品數量的減少。
1、採用StackExchange.Redis的Nuget包來連線和管理Redis。並封裝一套Redis的操作類。
2、採用單例模式管理Redis的例項。
3、模擬多使用者限量秒殺模型。通過Redis的incr和decr操作控制商品數量。
/// <summary> /// 超賣模型 /// </summary> public class OverSell { private static bool IsGoOn = true;//秒殺活動是否結束 public static void Run() { RedisBase.StringService.StringSet("Stock", 10); for (int i = 0; i < 5000; i++) { int k = i; Task.Run(() =>//每個執行緒就是一個模擬使用者請求 { if (IsGoOn) { var index = RedisBase.StringService.StringDecrement("Stock");//-1並且返回 if (index >= 0) { Console.WriteLine($"{k.ToString("000")} Success,Product Index:{index}"); //... } else { if (IsGoOn) { IsGoOn = false; } Console.WriteLine($"{k.ToString("000")} Failed,Product Index:{index}"); } } else { Console.WriteLine($"{k.ToString("000")} Finish......"); } }); } } }
4、執行效果,部分執行緒搶購到商品,部分執行緒同步搶購時,商品沒有了返回負數,部分執行緒搶購時,活動已結束。
倉庫地址:https://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate資料夾)
2020-04-25,望技術有成後能回來看見自己的腳步