ASP.NET Core微服务(六)——【redis操作】
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET Core微服务(六)——【redis操作】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASP.NET Core微服務(六)——【redis操作】:
Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
今天主要講解的是ASP.NET Core使用【redis】,其使用的方法很多,課大致羅列為五種,字符串操作為主有2種,和完整操作的有2種,還有一個ASP.NET Core上下文的還有1種。
【預處理,開啟redis服務】:下載地址:【redis服務(windows版)&redis可視化工具.rar_netcore微服務Tokenredis-.Net文檔類資源-CSDN下載】(已修改為免費下載)
開啟服務:
redis默認端口號:【6379】,一般是個面試題,如何是學生可以背一下。
本機服務強度測試:【redis-benchmark -n 10000 -q】
*服務器保持開啟狀態,可以進行以下操作*。
1、創建項目【ASP.NET Core】的控制臺應用,方便高效一些。直接看效果。不嫌麻煩可以用MVC的view視圖
自己找個地方隨便創建個控制臺項目即可,測試方法如下:
2、引入【NuGet】包
引入【ServiceStack.Redis】包,這個包比較小。
接受許可證:
命名空間:【using ServiceStack.Redis;】
using ServiceStack.Redis; using System;namespace redisDemo {class Program{static void Main(string[] args){RedisClient red = new RedisClient();}} }3、開始連接測試redis操作:
操作代碼:
using ServiceStack.Redis; using System;namespace redisDemo {class Program{static void Main(string[] args){RedisClient red = new RedisClient("127.0.0.1");bool isf = red.Set("testInfo","身體康健,財源廣進。");if (!isf) {Console.WriteLine("存儲失敗");return;}string str = red.Get<string>("testInfo");Console.WriteLine(String.Format("testInfo:{0}",str));}} }端口號可以省略,默認為:6379
測試成功,說明redis鏈接操作沒問題。
lpush集合操作【demo】
RedisClient redis = new RedisClient("127.0.0.1");redis.Remove("likes");//測試string s = "吃喝玩樂";//字符串轉byte[]byte[] byteArray = System.Text.Encoding.Default.GetBytes(s);redis.LPush("likes",byteArray);byte[] vs = redis.LIndex("likes",0);//byte[]轉字符串string str = System.Text.Encoding.Default.GetString(vs);Console.WriteLine(str);由于需要轉換byte[],所以需要兩次轉換。
RedisBaseDB封裝包:
需要的命名空間:
using ServiceStack.Redis;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;【RedisBaseDB】完整對象代碼如下(一定要注意引用命名空間):
public class RedisBaseDB{/// <summary>/// 添加與修改字符串key/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool SetString(RedisClient redis, string key, string value){return redis.Set<string>(key, value);}/// <summary>/// 設置字符串的同時設置過期時間/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="Seconds"></param>/// <param name="value"></param>public static void SetStringEx(RedisClient redis, string key, int Seconds, string value){redis.SetEx(key, Seconds, System.Text.Encoding.Default.GetBytes(value));}/// <summary>/// 獲取過期時間/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns>60</returns>public static double GetStringEx(RedisClient redis, string key){return redis.GetTimeToLive(key).Value.TotalSeconds;}/// <summary>/// 獲取字符串key/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>string</returns>public static string GetString(RedisClient redis, string key){return redis.Get<string>(key);}/// <summary>/// 自增key/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns>true</returns>public static bool Incr(RedisClient redis, string key){return redis.Incr(key) > 0;}/// <summary>/// 自減key/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns>true</returns>public static bool Decr(RedisClient redis, string key){return redis.Decr(key) > 0;}/// <summary>/// 刪除任何key/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns></returns>public static bool Del(RedisClient redis, string key){return redis.Del(key) > 0;}/// <summary>/// 添加哈希對象的單個值/// </summary>/// <param name="redis"></param>/// <param name="hashId">哈希key</param>/// <param name="key">對象key</param>/// <param name="value">對象value</param>/// <returns>true</returns>public static bool HSet(RedisClient redis, string hashId, string key, string value){return redis.HSet(System.Text.Encoding.Default.GetBytes(hashId), System.Text.Encoding.Default.GetBytes(key), System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 獲取哈希對象的單個值/// </summary>/// <param name="redis"></param>/// <param name="hashId">哈希key</param>/// <param name="key">對象key</param>/// <returns>string</returns>public static string HGet(RedisClient redis, string hashId, string key){return System.Text.Encoding.Default.GetString(redis.HGet(System.Text.Encoding.Default.GetBytes(hashId), System.Text.Encoding.Default.GetBytes(key)));}/// <summary>/// 獲取哈希對象的所有key與value/// </summary>/// <param name="redis"></param>/// <param name="hashId"></param>/// <returns>List_string</returns>public static List<string> HGetAll(RedisClient redis, string hashId){List<string> list = new List<string>();byte[][] vs = redis.HGetAll(hashId);foreach (var item in vs){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}/// <summary>/// 獲取哈希對象的所有key/// </summary>/// <param name="redis"></param>/// <param name="hashId"></param>/// <returns>List_string</returns>public static List<string> HKeys(RedisClient redis, string hashId){List<string> list = new List<string>();foreach (var item in redis.HKeys(hashId)){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}/// <summary>/// 獲取哈希對象的所有value/// </summary>/// <param name="redis"></param>/// <param name="hashId"></param>/// <returns>List_string</returns>public static List<string> HVals(RedisClient redis, string hashId){List<string> list = new List<string>();foreach (var item in redis.HVals(hashId)){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}/// <summary>/// 向列表左側添加一個value/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool LPush(RedisClient redis, string key, string value){return redis.LPush(key, System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 向列表右側添加一個value/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool RPush(RedisClient redis, string key, string value){return redis.RPush(key, System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 獲取start至end的列表信息start!=-1/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="start"></param>/// <param name="end"></param>/// <returns>List_string</returns>public static List<string> LRange(RedisClient redis, string key, int start, int end){if (start < 0){return null;}List<string> list = new List<string>();foreach (var item in redis.LRange(key, start, end)){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}/// <summary>/// 刪除列表左側的第一個值并返回該值/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns>string</returns>public static string LPop(RedisClient redis, string key){return System.Text.Encoding.Default.GetString(redis.LPop(key));}/// <summary>/// 刪除列表右側的第一個值并返回該值/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <returns>string</returns>public static string RPop(RedisClient redis, string key){return System.Text.Encoding.Default.GetString(redis.RPop(key));}/// <summary>/// 添加一條Set集合數據/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool SAdd(RedisClient redis, string key, string value){return redis.SAdd(key, System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 移除一條Set集合數據/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool SRem(RedisClient redis, string key, string value){return redis.SRem(key, System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 獲取set集合所有數據/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>List_string</returns>public static List<string> GetSetAll(RedisClient redis, string key){List<string> list = new List<string>();foreach (var item in redis.SMembers(key)){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}/// <summary>/// 添加一條ZSet集合數據/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="value"></param>/// <returns>true</returns>public static bool ZAdd(RedisClient redis, string key, double score, string value){return redis.ZAdd(key, score, System.Text.Encoding.Default.GetBytes(value)) > 0;}/// <summary>/// 獲取所有成員,進行從高到低排列/// </summary>/// <param name="redis"></param>/// <param name="key"></param>/// <param name="min"></param>/// <param name="max"></param>/// <returns></returns>public static List<string> ZRevRange(RedisClient redis,string key){List<string> list = new List<string>();foreach (var item in redis.ZRevRange(key, 0, (int)redis.ZCard(key))){list.Add(System.Text.Encoding.Default.GetString(item));}return list;}}總結:
這里使用的是最節約環境的包。功能上沒什么差別,就是的函數名稱得多用幾次才能熟練。
希望此文對大家有所幫助,后續會編寫:
ASP.NET Core微服務(七)——【docker部署linux上線】
等文章。
此文標題為ASP.NET Core微服務(六)——【redis操作】
總結
以上是生活随笔為你收集整理的ASP.NET Core微服务(六)——【redis操作】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core微服务(五)——
- 下一篇: 设计模式的三大类