【个人博客搭建】(15)Redis缓存使用

1、下载nuget包:StackExchange.Redis; 并引用

using StackExchange.Redis;

2、配置信息

  /* Redis缓存配置 */"Redis": {"Enabled": true,"ConnectionString": "127.0.0.1:6379,password=123456"}

3、配置模型

  public class RedisConfig{public bool Enabled { get; set; }public string ConnectionString { get; set; }}

4、编写帮助类

public class RedisHelper{private static bool enabled = AppSettings.app(new string[] { "Redis", "Enabled" }).ToUpper() == "TRUE" ? true : false;private static string connectionString = AppSettings.app(new string[] { "Redis", "ConnectionString" });private static ConnectionMultiplexer redis;private static IDatabase db;private static bool isRun = false;static RedisHelper(){if (enabled){if (IsRedisRunning()){// 创建连接redis = ConnectionMultiplexer.Connect(connectionString);db = redis.GetDatabase();}}else{isRun = false;}}/// <summary>/// 创建模型/// </summary>/// <returns></returns>/// <exception cref="Exception"></exception>static RedisConfig GetRedisConfig(){if (string.IsNullOrWhiteSpace(connectionString)){throw new Exception("未获取到配置的Redis连接字符串信息!请检查");}var redisConfig = new RedisConfig(){Enabled = enabled,ConnectionString = connectionString,};return redisConfig;}/// <summary>/// 判断Redis是否在运行/// </summary>/// <returns></returns>static bool IsRedisRunning(){try{// 创建Redis连接ConnectionMultiplexer connection = ConnectionMultiplexer.Connect(connectionString);// 获取Redis数据库实例IDatabase db = connection.GetDatabase();// 创建GUID、随机数Random random = new Random();var testValue = Guid.NewGuid().ToString() + "|" + random.Next(0, 100).ToString();// 执行一个简单的SET命令db.StringSet("testKey", testValue);// 执行一个简单的GET命令string value = db.StringGet("testKey");// 关闭连接connection.Close();// 如果能够成功执行SET和GET命令,则认为Redis正在运行isRun = true;return value == testValue;}catch (Exception ex){// 发生异常,可能是Redis未启动或连接失败Console.WriteLine("Error: Redis运行失败。" + ex.Message);return false;}}#region 增删改查 (启动 && 在运行)// 添加数据public static void Add(string key, string value){if (isRun){db.StringSet(key, value);}}// 查询数据public static string Get(string key){if (isRun){return db.StringGet(key);}return "";}// 更新数据public static void Update(string key, string value){if (isRun){db.StringSet(key, value);}}// 删除数据public static void Delete(string key){if (isRun){db.KeyDelete(key);}}#endregion}

         帮助类里边有对Redis是否运行进行了一个判断,防止不使用的兄弟在不使用该功能的是否不会出错。

        还可以考虑在需要但是没运行时添加日志记录,或者使用其他类似于队列等后续处理

5、测试。

        我们可以在用户登录的时候进行缓存token信息。(后续会对其进行过期处理)

var token = JwtHelper.GenerateToken(jwtClaim);
RedisHelper.Add("Login:" + para.UserName, token);
return ApiResultHelper.Success(token);

        使用“:”划分文件夹。Login为文件夹名称。

6、结果:

        正常运行的话是会存入进去的。

        不启动或未启动Redis服务时,是不写入的。

7、其他

        以上就是对Redis的简单应用了。

        在在增删改查的操作中,我们也可以添加一个是否存在key的判断。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小剧场短剧影视小程序源码_后端PHP

项目运行截图 源码贡献 https://githubs.xyz/boot?app42 部署说明 linux/win任选 PHP版本&#xff1a;7.3/7.2&#xff08;测试时我用的7.2要安装sg扩展 &#xff09; 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个…

PotatoPie 4.0 实验教程(34) —— FPGA实现摄像头图像二值化腐蚀效果

链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 图像二值化腐蚀处理有什么作用&#xff1f; 图像二值化腐蚀处理在图像处理中起到了以下作用&#xff1a; 物体分割与提取&#xff1a;在图像二值化之后&#xff0c;通过腐蚀操作可以消除噪声、连接相邻的…

uniapp 对接 Apple 登录

由于苹果要求App使用第三方登录必须要求接入Apple登录 不然审核不过 所以&#xff1a; 一、勾选苹果登录 二、 设置AppId Sign In Apple 设置完成重新生成描述文件 &#xff01;&#xff01;&#xff01;&#xff01;证书没关系 示例代码&#xff1a; async appleLogin…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构&#xff1a;分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变&#xff0c;软件架构也需要同步进行升级&#xff0c;引入面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;简称 SOA&#xff09;方法论。…

数据结构––队列

1.队列的定义 2.队列的分类 2.1循环队 2.2链式队 3.队列的实现 3.1循环队 3.1.1声明 typedef int QDataType; #define MAXSIZE 50 //定义元素的最大个数 /*循环队列的顺序存储结构*/ typedef struct {QDataType *data;int front; //头指针int rear; //尾指针 }Queue;…

Macos安装OrbStack

什么是OrbStack OrbStack 是一种在 macOS 上运行容器和 Linux 机器的快速、轻便和简单方法。它是 Docker Desktop 和 WSL 的超强替代品&#xff0c;所有这些都在一个易于使用的应用程序中。 在Macos M系列芯片上&#xff0c;经常遇到docker镜像不兼容的问题&#xff0c;此时使…

【八大排序(三)】快速排序

❣博主主页: 33的博客❣ ▶️文章专栏分类:八大排序◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多排序知识 目录 1.前言2.快速排序2.1概念2.2画图理解2.3递归代码实现2.3.1Hoare法2.3.2挖坑法2.3.3前…

Java 写一个死锁的例子

public class DeadLock {public static void main(String[] args) {Object lock1 new Object();Object lock2 new Object();new Thread(new A(lock1,lock2),"线程A").start();new Thread(new B(lock1,lock2),"线程B").start();} }class A implements Run…

WORD排版常见问题与解决方案

前言 近期使用word软件进行论文排版工作&#xff0c;遇到了一些常见的问题&#xff0c;记录一下&#xff0c;避免遗忘。 基本配置 系统环境&#xff1a;win10/win11 word版本&#xff1a;Microsoft Office LTSC 专业增强版 2021 问题与解决方案 问题1&#xff1a;页眉显示内…

Mac好用又好看的终端iTerm2 + oh-my-zsh

Mac好用又好看的终端iTerm2 1. iTerm2的下载安装2. oh-my-zsh的安装2.1 官网安装方式2.2 国内镜像源安装方式 3. oh-my-zsh配置3.1 存放主题的路径3.2 存放插件的路径3.3 配置文件路径 1. iTerm2的下载安装 官网下载&#xff1a; iTerm2 2. oh-my-zsh的安装 oh-my-zsh是一…

激光共聚焦和白光干涉仪哪个好?

在精密测量领域&#xff0c;激光共聚焦显微镜和白光干涉仪是两种不同的高精度光学测量仪器。它们各自有着独特的应用优势和应用场景。选择哪种仪器更好&#xff0c;取决于具体的测量需求和样品特性。在选择适合特定应用的技术时&#xff0c;需要仔细考虑其特点和功能。 白光干…

常见的锁策略与死锁(详解)

文章目录 前言一、常见的锁策略1.乐观锁vs悲观锁2.重量级锁vs轻量级锁3.自旋锁vs挂起等待锁4.读写锁vs互斥锁5.公平锁vs非公平锁6.可重入锁vs不可重入锁可重入锁在哪释放锁 7.synchronized具体是采用了哪些锁策略呢?synchronized内部实现策略(内部原理)锁消除锁粗化 二、死锁1…