初探Redis-基礎類型String
Redis存在五種基礎類型:字符串(String)、隊列(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。String的出鏡率算是最高的。本次列舉出String的常用操作。
Redis官網://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、運行效果,部分線程搶購到商品,部分線程同步搶購時,商品沒有了返回負數,部分線程搶購時,活動已結束。
倉庫地址://gitee.com/530521314/Partner.TreasureChest.git(RedisOperate文件夾)
2020-04-25,望技術有成後能回來看見自己的腳步