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操作】相关推荐

  1. ASP.NET Core微服务(五)——【vue脚手架解析接口】

    ASP.NET Core微服务(五)--[vue脚手架解析接口]: 后台接口请参照:ASP.NET Core微服务(三)--[跨域配置]:[https://blog.csdn.net/feng8403 ...

  2. ASP.NET Core微服务(四)——【静态vue使用axios解析接口】

    ASP.NET Core微服务(二)--[ASP.NET Core Swagger配置]: 环境:win10专业版+vs2019+sqlserver2014/2019+vsCode+在线资源 boot ...

  3. ASP.NET Core微服务(三)——【跨域配置】

    ASP.NET Core微服务(三)--[跨域配置] 对应练习demo(跨域)下载路径(1积分):[https://download.csdn.net/download/feng8403000/151 ...

  4. ASP.NET Core微服务(二)——【ASP.NET Core Swagger配置】

    ASP.NET Core微服务(二)--[ASP.NET Core Swagger配置]: 环境:win10专业版+vs2019+sqlserver2014/2019 ASP.NET Core微服务( ...

  5. ASP.NET Core微服务(一)——【完整API搭建及访问过程】

    ASP.NET Core微服务(一)--[完整API搭建及访问过程]: 环境:win10专业版+vs2019+sqlserver2014/2019 对应练习demo下载路径(1积分):[https:/ ...

  6. Asp.Net Core微服务再体验

    Asp.Net Core微服务再体验 原文:Asp.Net Core微服务再体验 ASP.Net Core的基本配置 .在VS中调试的时候有很多修改Web应用运行端口的方法.但是在开发.调试微服务应用 ...

  7. ASP.NET Core微服务(七)——【docker部署linux上线】(RDS+API接口测试部分)

    ASP.NET Core微服务(七)--[docker部署linux上线]: 本文测试采用阿里云的RDS(sqlserver服务器)+ECS(linux服務器)进行测试,由于是测试,[按量付费]买个最 ...

  8. npm——安装教程、安装vue脚手架(ASP.NET Core微服务(五)——【vue脚手架解析接口】过度章节)

    npm:是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题. 比如常用的有: 1)允许用户从NPM服务器下载别人编写的第三方包到本地使用. 2)允许用户从NPM服务器下载并 ...

  9. ASP.NET CORE 微服务(简化版)实战系列-没有比这性价比再高的实战课程了

    ASP.NET CORE 微服务(简化版)实战系列,最后1天298,现在注册购买再减50.作者jesse 腾飞在2.14 早上我买了他的课程后,他才做了下面这个活动: 作者jesse 腾飞花了大量的时 ...

最新文章

  1. mysql中change用法,mysql 中alter的用法以及一些步骤
  2. html中open打开新网页,JavaScript-打开新窗口(window.open)
  3. Codeforces 768E:Game of Stones
  4. P4915 帕秋莉的魔导书
  5. python中的reduce() 函数
  6. Atitit php序列化 php的serialize序列化和json序列化
  7. c语言 cstring “+”: 运算符不起任何作用;应输入带副作用的运算符_国家计算机二级考试C语言选择题高频考点汇总,干货满满...
  8. Spring Boot Cache之缓存
  9. 漫步数学分析十五——连续
  10. java中对date的一些处理以及获取date
  11. 于掌控板实现简单的抢答器系统
  12. android 字体加粗有阴影,Android TextView高级显示技巧实例小结
  13. Fiddler——自动响应器设置——URL重定向
  14. 如何解决PS软件工作区不能吸附到工具栏?
  15. TSAP(2) : 时区切换
  16. 2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等)
  17. jsonp跨域原理解析
  18. 阿里数据科学家一次讲透数据中台,15页PPT精华,速转走!
  19. mybatis 源码系列(四) 数据库驱动Driver加载方式
  20. Alios things资料篇

热门文章

  1. php混合运算计算器,混合运算计算器
  2. 合并数组:双针模型,原地实现
  3. SpringBootSpring --- Redis 集成 Error creating bean with name 'enableRedisKeyspaceNotificationsIniti
  4. MSCRM2011 Current User has Role 【判定当前用户角色方法】
  5. [Debug]IOS微信浏览器不支持form表单的target=_blank
  6. Sql Server 连接池及其用法
  7. Eclipse 各种快捷键
  8. mmap直接控制底层
  9. 关于Android的硬件抽象层添加进Android系统默认编译的问题
  10. 部署Apache服务器