首页 > 数据库 >在.Net中操作redis

在.Net中操作redis

时间:2024-04-01 16:57:38浏览次数:24  
标签:int Redis cache redis test 操作 Net configuration

在.Net中操作redis

一、环境

  • .Net 7
  • redis 7.2.4

二、所需类包

  • StackExchange.Redis

三、连接redis信息

appsettings.json配置redis连接信息


 // Redis配置
 //"Redis": {
 //  "Default": {
 //    "Connection": "", // 连接地址,端口号,密码
 //    "InstanceName": "", // 实例名
 //    "DefaultDB": "1" // 数据库
 //  }
 //},

 "Redis": {
   "Host": "120.xxx.xx.xx", // ip地址
   "Port": "6379", // 端口
   "password": "123456", // redis密码
   "InstanceName": "local", // 实例名称
   "DefaultDb": 1, // 连接的库
   "maxWritePoolSize": 60,
   "maxReadPoolSize": 60,
   "autoStart": true,
   "ConnectTimeout": 60, // 超时
   "KeepAlive": 5, // 保存x秒的活动连接
   "recordeLog": false, 
   "preName": "test_" // key的前缀
 },

四、实例

using AspNetFrame.Domain.Entity.User;
using AspNetFrame.Domain.Service;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using StackExchange.Redis;
using System.Security.Policy;
using System;

namespace AspNetFrame.Api.Controller.Redis
{
    [ApiController]
    [Route("[controller]/[action]")]
    public class RedisCnnTestController : ControllerBase
    {
        private readonly IConfiguration _configuration;
        private IDatabase cache;
        private ConnectionMultiplexer connection;
        public RedisCnnTestController(IConfiguration configuration) 
        {
            _configuration = configuration;
            string redisHost = _configuration["Redis:host"]; // 连接的url
            int redisPort = int.Parse(_configuration["Redis:port"]); // 端口
            string Password =_configuration["Redis:Password"]; // 连接密码
            int DefaultDatabase = int.Parse(_configuration["Redis:DefaultDb"]); // 数据库
            int ConnectTimeout = int.Parse(_configuration["Redis:ConnectTimeout"]); // 超时时间
            int KeepAlive = int.Parse(_configuration["Redis:KeepAlive"]); // 保存x秒的活动连接

            // 连接配置
            var configurationOptions = new ConfigurationOptions
            {
                EndPoints =
                {
                    { redisHost, redisPort },
                },
                DefaultDatabase = DefaultDatabase,
                KeepAlive = KeepAlive, // 保存x秒的活动连接
                Password = Password, // 连接密码
                ConnectTimeout = ConnectTimeout, //超时时间
                AllowAdmin = true,
            };
            connection = ConnectionMultiplexer.Connect(configurationOptions);
            cache = connection.GetDatabase();
        }
        public JsonResult Test()
        {
            //string redisHost = _configuration["Redis:host"]; // 连接的url
            //int redisPort = int.Parse(_configuration["Redis:port"]); // 端口
            //string pwd = _configuration["Redis:Password"];

            cache.StringSet("test", "hello");
            string test = cache.StringGet("test");
            JsonResult json = new JsonResult(new
            {
                code = 200,
                msg = test
            });
            return json;
        }

        [HttpPost]
        public JsonResult Test2()
        {
            LoginUser loginUser = new LoginUser()
            {
                UserName = "admin",
                Password = "admin",
                AuthorityId = 1,
            };

            LoginUser loginUser2 = new LoginUser()
            {
                UserName = "admin2",
                Password = "admin2",
                AuthorityId = 1,
            };


            List<LoginUser> loginUsers = new List<LoginUser>() { loginUser, loginUser2 };
            cache.StringSet("loginUserList", JsonConvert.SerializeObject(loginUsers), TimeSpan.FromMinutes(10));  // 过期时间为10分钟
            cache.StringSet("loginUser_admin", JsonConvert.SerializeObject(loginUser), TimeSpan.FromMinutes(10)); 
            cache.StringSet("test", "hello");

            LoginUser redisLoginUser = JsonConvert.DeserializeObject<LoginUser>(cache.StringGet("loginUser_admin"));

            string test = cache.StringGet("test");
            JsonResult json = new JsonResult(new
            {
                code = 200,
                msg = test,
                result= redisLoginUser
            });
            return json;
        }
    }
}

五、调用api结果

可视化工具:Another Redis Desktop Manager
redis中数据

这样就把list数据存入了redis中

标签:int,Redis,cache,redis,test,操作,Net,configuration
From: https://www.cnblogs.com/zbfoot/p/18108840

相关文章

  • 监听检测页面长时间未操作后事件
    代码写于App.vue页面,相当于全局监听,每个路由是被包含在div中的!<template><divid="app"@click="clickDiv"><router-view></router-view></div></template><script>exportdefault{name:"App",da......
  • 云原生周刊:Kubernetes 1.30 的一切新功能 | 2024.4.1
    开源项目推荐Kubernetesschedulersimulator该项目是一个用于模拟Kubernetes调度器行为的开源项目,可用于测试和评估调度器的性能和行为。它提供了一个模拟集群和调度器的框架,并提供分析和可视化工具以帮助用户理解实验结果。OneChart该项目旨在简化应用程序的部署过程,通过......
  • Higress 基于自定义插件访问 Redis
    作者:钰诚简介基于wasm机制,Higress提供了优秀的可扩展性,用户可以基于Go/C++/Rust编写wasm插件,自定义请求处理逻辑,满足用户的个性化需求,目前插件已经支持redis调用,使得用户能够编写有状态的插件,进一步提高了Higress的扩展能力。文档在插件中调用Redis[1]中提供了......
  • Netty学习——源码篇9 Handler其他处理与异步处理
    1ChannelHandlerContext    每个ChannelHandler被添加到ChannelPipeline后,都会创建一个ChannelHandlerContext,并与ChannelHandler关联绑定。ChannelHandlerContext允许ChannelHandler与其他的ChannelHandler进行交互。ChannelHandlerContext不会改变添加到其中的Chan......
  • 【吊打面试官系列】Redis篇 -都有哪些办法可以降低 Redis 的内存使用情况呢?
    大家好,我是锋哥。今天分享关于【都有哪些办法可以降低Redis的内存使用情况呢?】面试题,希望对大家有帮助;都有哪些办法可以降低Redis的内存使用情况呢?如果你使用的是32位的Redis实例,可以好好利用Hash,list,sortedset,set等集合类型数据,因为通常情况下很多小的Key......
  • vue中路由跳转 切换tab页需要保存之前操作怎么办
    如图所示我需要草稿和新建流程页面切换草稿页面之前的操作(比如填写页面比如查询后页面等)仍保留使用vue中的keepalive组件 而对于若依系统菜单管理中自带是否缓存但注意一定要填写组件名称组件名称定义地址:......
  • redis自学(26)
    内存淘汰策略内存淘汰:就是当Redis内存使用达到设置的阈值时,redis主动挑选部分key删除以释放更多内存的流程。Redis会在处理客户端命令的方法processCommand()中尝试做内存淘汰:  也就是说,redis是在任何命令执行之前,做内存的检查或者说尝试去淘汰一部分内存。 Redis支持8......
  • 如何保证MySQL和Redis数据一致性?
    背景在高并发的业务场景中,因为MySQL数据库是操作磁盘效率比较低,因此大多数情况下数据库都是高并发系统的瓶颈。因为Redis操作数据是在内存中进行,所以就需要使用Redis做一个缓存。让请求先访问到Redis,而不是直接访问MySQL数据库。效果图如下查询数据上面的业务场景,就是一个典......
  • Veritas NetBackup 10.4 (Unix, Linux, Windows) - 领先的企业备份解决方案
    VeritasNetBackup10.4(Unix,Linux,Windows)-领先的企业备份解决方案The#1enterprisebackupandrecoverysolution.请访问原文链接:https://sysin.org/blog/veritas-netbackup-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org备份和恢复软件解决方案领......
  • Microsoft.AspNetCore.SignalR.Client中传送用户Token
    Microsoft.AspNetCore.SignalR.Client的.Net客户端传送Token的最佳方法!如下将Authorization标头添加到HubConnectionBuilder中,如下所示:对于不记名令牌->HubConnection=newHubConnectionBuilder().WithUrl($"https://10.0.2.2:5001/chatHub",(opts)=>......