.Net Core 配置Redis+Redis基础安装配置

一、.Net Core 配置Redis

Redis

  非布式缓存 速度比SQL快

  1、Redis 的数据存储到 内存上

  2、非关系型数据库(缓存)

  3、数据类型五种:

    *string(字符串 《存储字符串、整数或者浮点数》

       一个字符串类型的值能存储最大容量512M)、

       *list(列表)、 hash(哈希《存储键值对的无序散列表》) 、

    *set(集合) 、zset (有序集合)(五种数据类型)

  4、内存(闪存)的数据 关闭计算机时 会消失

  5、Redis 持久化(将数据保存到硬盘上)方案(两种):

    5.1、RDB(默认持久化方案)RDB 是 Redis 默认的持久化方案。

      在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。

     即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 (以快照方式) 恢复速度快,但是容易丢数据

 

               5.2、AOF:Redis 默认不开启。

       它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。

       Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。(恢复时间较长,数据完整性)

 

SQL、MYSQL

  1、关系型数据库

  2、常用的数据类型: int varchar datetime float double

 下载安装及密码配置 

https://blog.csdn.net/sco5282/article/details/122884225

1、运行Redis

1.1、在解压后的Reids 所在文件夹 输入 cmd 命令

 

2、启动  redis

                默认端口 6379

    2.1第一种:通过执行命令的方式启动服务

    redis-server redis.windows.conf

 

 

    2.2第二种、通过命令将启动服务的命令做成本电脑服务

    redis-server --service-install redis.windows.conf

    直接任务管理器中操作启动、关闭

    

 

3、查看redis数据

    3.1  第一种:通过敲写命令获取

       ---第2步2.1中黑框不关闭、用同样的方法再次打开一个黑框敲对应命令查看

 

    3.2  第二种:通过管理工具管理Redis

              https://blog.csdn.net/weixin_52826368/article/details/126256943

    

二、Redis使用过程中的错误

控制台启用报错:

redis-server.exe redis.windows.conf

 

在Windows下启动redis报错:Creating Server TCP listening socket *:6379: bind: No error

如图所示:

 

解决方案:
直接在命令行中输入:redis-cli.exe
如下图所示:

然后再输入:shutdown
意思就是关闭的意思,如下图所示;

然后再输入:exit
意思就是退出的意思,如下图所示;

然后重新输入启动命令:redis-server.exe redis.windows.conf
如图所示,很优雅的解决

参考文献:https://blog.csdn.net/qq_38220334/article/details/105527236 

 

.net Core存入数据时报错

原因连接报错:Redis连接报错:ERR Client sent AUTH, but no password is set

原因:新安装没有对redis设置密码,但是连接时有密码,所以需要对redis设置密码;产生这个问题的原因异常信息里已经说明,就是Redis服务器没有设置密码,但客户端向其发送了AUTH(authentication,身份验证)请求携带着密码,导致报错。既然是没有设置密码导致的报错,那我们就把Redis服务器给设置上密码就好了。

参考文献:https://blog.csdn.net/u014026084/article/details/105767907

# requirepass foobared
requirepass 123456 //123456是设置的密码 

修改后重启;

三、.Net Core代码中将数据存入Redis / 取出Redis数据

    1、引用拓展包 到对应项目中(哪里用哪里进行下载该包)

    Microsoft.Extensions.Caching.StackExchangeRedis

  2、配置到appsettings.json夹中Redis连接字符串

//Redis连接字符串
"RedisConnectionStrings": "127.0.0.1:6379,password=,defaultDatabase=0,connectTimeout=5000,syncTimeout=1000"

 

 

  3、配置Redis参数  (Start.up中配置)    注入   ----类似于连接MSSQL字符串操作步骤

1
2
3
4
5
//配置Redis   注入类似于配置数据库连接字符串
services.AddStackExchangeRedisCache(options =>
            { options.Configuration =Configuration.GetSection("RedisConnectionStrings").Value;
                //options.InstanceName = "SampleInstance";
            });

  4、通过依赖注入

    4.1 引用Redis命名空间  

         using Microsoft.Extensions.Caching.Distributed;

               4.2通过构造函数依赖注入

      

 

  5、代码获取Redis数据   与  代码向Redis添加数据

    给string类型赋值使用的关键字Set

    获取string类型使用的命令Get

1
2
3
4
5
6
7
//获取对应键值ShoppingCart数据
//获取key为一个数组列表格式
 var key= distributedCache.GetString("ShoppingCart");
 
//将对象序列化字符串 添加到redis中
//当下存入的为string形式 ,需要对添加的数据序列化
 distributedCache.SetString("ShoppingCart", jsonData);

   

  6.、例子

    例子功能逻辑:该段代码逻辑为向购物车添加商品,

           当购物车之前有选中该商品时,则在购物车原有购买数量基础上+1,

           当购物车中没有该选中商品时,则将该商品     /// <summary>

复制代码

public readonly GoodsDbContext db;
public readonly IDistributedCache distributedCache;


/// <summary>
/// 依赖注入 上下文 Redis注入
/// </summary>
public ShppintCartdal(GoodsDbContext dbContext,IDistributedCache d)
{
db = dbContext;
distributedCache = d;
}


/// 添加购物车 或更改购买数量 /// </summary> /// <param name="s"></param> /// <returns></returns> public ApiResult AddGoods(ShoppingCart s) { //先定义List列表 因为返回的数据也是放入列表中的便于后面查询,所以添加的也应该是列表 List<ShoppingCart> list = new List<ShoppingCart>(); //去Redis中查找数据 //根据键名查找 获取的Key为一个数组列表格式
     var key= distributedCache.GetString("ShoppingCart");

        //如果是key为NULL 代表是第一次访问Redis if (string.IsNullOrEmpty(key)) { //先将对象存储到list中 list.Add(s); //对列表序列化 前提下载包json 引用 using Newtonsoft.Json; var json = JsonConvert.SerializeObject(list);
//将对象序列化字符串 添加到redis中 distributedCache.SetString("ShoppingCart", json); } else //代表key有值 则进行 查找 { //先将Key反序列化为对象 var listDes = JsonConvert.DeserializeObject<List<ShoppingCart>>(key);
          //根据题意获取是否购物车中有此商品
var item = listDes.FirstOrDefault(u => u.Gid == s.Gid); if (item != null) { item.BuyNum += 1; //判断是否假删除 此步缘由与根据题意编辑 if (item.IsDelete == 1) { item.BuyNum = 1; item.IsDelete = 0; } //将修改后的数据所在的整个对象序列化字符串 添加到redis中 var json = JsonConvert.SerializeObject(listDes); distributedCache.SetString("ShoppingCart", json); } //不存在 添加新的数据到购物车 else { //将对象存储到返回时序列化后的listDes中 listDes.Add(s); //将对象序列化字符串 添加到redis中 var json = JsonConvert.SerializeObject(listDes); distributedCache.SetString("ShoppingCart", json); } }
复制代码

 

       7、设置设置Reids的过期时间

 _distributedCache.SetString("shoppingCar", JsonConvert.SerializeObject(list), new DistributedCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(5)));  //设置超时时间5后过期

 

 

 成功存储到redis数据后打开reids管理工具可以查看到:

 

 

 

  

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   じ逐梦  阅读(2852)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示