csredis-in-asp.net core理论实战-使用示例

news/2024/11/24 2:03:50/

csredis GitHub

  • https://github.com/2881099/csredis

示例源码

https://github.com/luoyunchong/dotnetcore-examples/blob/master/Caching/OvOv.CsRedis/

前提

  • 安装并配置好redis服务,可用。
  • vs2017或vs2019或vscode
  • .net core 2.2+ sdk

创建一个. NET Core WebAPI项目

想执行 . NET Core CLI命令行,要cd到csproj同级目录中

dotnet add package CSRedisCore
#mvc分布式缓存注入
dotnet add package Caching.CSRedis


程序包管理控制台(Package Manager)中运行,选择你的项目

Install-Package CSRedisCore
Install-Package Caching.CSRedis

普通模式

  1. appsettings.json配置项
{"CsRedisConfig": {"DefaultConnectString": "127.0.0.1:6379,password=,defaultDatabase=0,prefix=csredis-default-"}
}
  1. Startup.cs中配置如下
public void ConfigureServices(IServiceCollection services)
{// eg 1.单个redis实现 普通模式//CSRedisClient csredis = new CSRedisClient("127.0.0.1:6379,password=,defaultDatabase=csredis,prefix=csredis-example");//eg 2.单个redis,使用appsettings.json中的配置项IConfigurationSection configurationSection = Configuration.GetSection("CsRedisConfig:DefaultConnectString");CSRedisClient csredis = new CSRedisClient(configurationSection.Value);//初始化 RedisHelperRedisHelper.Initialization(csredis);//注册mvc分布式缓存services.AddSingleton<IDistributedCache>(new CSRedisCache(RedisHelper.Instance));...其他代码}
  1. ValuesController.cs

通过静态方法调用,键为test1 ,value为前台传来的值,缓存60s

获取值Get方法, test1作为键,返回值给前台。60s后再获取,将无法得到值。

// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{RedisHelper.Set("test1", value, 60);
}// GET api/values
[HttpGet]
public ActionResult<string> Get()
{return RedisHelper.Get("test1");
}

普通模式-控制台

   class Program{static void Main(string[] args){var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=,defaultDatabase=CsRedis,prefix=CsRedis_ConSole_Example");RedisHelper.Initialization(csredis);RedisHelper.Set("test1", "123123", 60);string result = RedisHelper.Get("test1");Console.WriteLine("key:test1,value:" + result);Console.ReadKey();}}

哨兵模式

前提

  • 了解哨兵模式的作用
  • 并有一个可用的主(master)redis服务,二个从(slaver)服务,有三个哨兵监控。
  1. appsettings.json配置项
{"CsRedisConfig": {"SentinelConnectString": "mymaster,password=,prefix=csredis-example-","Sentinel": ["127.0.0.1:26379","127.0.0.1:26380","127.0.0.1:26381"]}
}
  1. Startup.cs中配置如下
public void ConfigureServices(IServiceCollection services)
{//eg.3 使用appsettings.json,哨兵模式IConfigurationSection configurationSection = Configuration.GetSection("CsRedisConfig:SentinelConnectString");string[] sentinelValues = Configuration.GetSection("CsRedisConfig:Sentinel").Get<string[]>();CSRedisClient csredis = new CSRedisClient(configurationSection.Value, sentinelValues);//初始化 RedisHelperRedisHelper.Initialization(csredis);//注册mvc分布式缓存services.AddSingleton<IDistributedCache>(new CSRedisCache(RedisHelper.Instance));...其他代码
}
  1. 使用缓存时与普通模式相同,不过关闭某一个redis服务,服务依旧可用,不过如果redis处于切换cluster过程,将会有短暂的失败,不过一会就会恢复。

相关文章

  • .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐 https://www.cnblogs.com/yilezhu/p/9947905.html
  • 【由浅至深】redis 实现发布订阅的几种方式 https://www.cnblogs.com/kellynic/p/9952386.html
  • 深入剖析Redis系列(四) - Redis数据结构与全局命令概述 https://juejin.im/post/5bb01064e51d453eb93d8028

RedisHelper 与redis-cli命令行保持一致的api,会使用redis相关命令,即会使用RedisHelper方法

配合redis-cli命令行

  static void Main(){CSRedisClient csredis = new CSRedisClient("127.0.0.1:6379,password=,defaultDatabase=CsRedis,prefix=CsRedis_ConSole_Example");RedisHelper.Initialization(csredis);Test();Console.ReadKey();}static void Test(){//1.set key value [ex seconds] [px milliseconds] [nx|xx]//setex key seconds value #设定键的值,并指定此键值对应的 有效时间。//setnx key value  #键必须 不存在,才可以设置成功。如果键已经存在,返回 0。RedisHelper.Set("redis-key", "just a string value", 50);//setex "redis-key" 50 "just a string value"RedisHelper.Set("redis-key-class",DateTime.Now, 30);//1.1.2. 获取值//get key//如果要获取的 键不存在,则返回 nil(空)。string redisValue = RedisHelper.Get("redis-key");Console.WriteLine($"setex redis-key 50 just a string value ,RedisHelper.Get()得到值如下:{redisValue}");DateTime now = RedisHelper.Get<DateTime>("redis-key-class");Console.WriteLine($"setex redis-key-class DateTime.Now,RedisHelper.Get()值如下{now}");//1.1.3. 批量设置值//mset key value [key value ...]RedisHelper.MSet("a", "1", "b", "2", "c", "3","d","4");//等价于mset a 1 b 2 c 3 d 4//1.1.4. 批量获取值//mget key [key ...]string[] mgetValues = RedisHelper.MGet<string>("a", "b", "c","d");Console.WriteLine($"mset a 1 b 2 c 3 d 4, RedisHelper.MGet()得到的值是");foreach (var mgetValue in mgetValues){Console.Write($"{mgetValue}、");}Console.WriteLine();//1.1.5. 计数//incr key//incr 命令用于对值做 自增操作//自增指定数字long incr = RedisHelper.IncrBy("key");Console.WriteLine($"incr key, incr得到的值是{incr}");//设置自增数字的增量值incr = RedisHelper.IncrBy("key",2);Console.WriteLine($"再次incrby key 2, incr得到的值是{incr}");incr = RedisHelper.IncrBy("key", -2);Console.WriteLine($"再次decrby key -2, incr得到的值是{incr}");//exists keybool isExistsKey = RedisHelper.Exists("new-key");Console.WriteLine($"exists key ,value:{isExistsKey}");double incrByFloat=RedisHelper.IncrByFloat("key-float", 0.1);Console.WriteLine($"incrbyfloat key-float 0.1,value:{incrByFloat}");}

http://www.ppmy.cn/news/623356.html

相关文章

printf段错误(core dump): 一个格式化输出引起的问题

1、printf段错误&#xff08;core dump&#xff09;: 一个格式化输出引起的问题 贴一个简单的例子&#xff1a; #include <stdio.h>int main(){int len sizeof(int);printf("%s\n",len);return 0; }rootubuntu:test#gcc test.c test.c: In function ‘main’…

关于使用ESP报错问题解决记录

1.封装udp透传函数报错 … WiFi connected CORRUPT HEAP: Bad head at 0x3ffdfbe8. Expected 0xabba1234 got 0x3ffdfcb0 abort() was called at PC 0x4008a481 on core 0 ELF file SHA256: 0000000000000000 Backtrace: 0x4008dad4:0x3ffd5a40 0x4008dd4d:0x3ffd5a60 0x4008a4…

Linux core dump在Android上的应用

&#xfeff;&#xfeff; 之前整理过一篇linux core dump的文章&#xff0c;一直想把这个特性在手机上应用起来&#xff0c;帮助排查错误&#xff0c;今天终于如愿以偿&#xff0c;记录如下。 【1】概述 在Android系统上&#xff0c;java应用程序出错时很容易通过logcat获取出…

vue解析系列(二):core vue instance vue

core vue github.com/vuejs/vue/b… import Vue from ./instance/index // 引入初始化全局api函数 import {initGlobalAPI } from ./global-api/index // 引入服务端端判断变量 import {isServerRendering } from core/util/env // 引入函数组件context构造函数 import {Functi…

axios Post请求 .Net Core中的接口以及FromBody特性和FromForm特性的使用

.Net Core中Get请求接口的参数一般可以在url中获取,但是Post请求接口一般建议使用[FromBody]特性来绑定参数,而前端发请求时也得需要注意,前端代码如下(vue): const postData = {id: 12 }; // post请求的数据,可自行定义 this.$axios({url: api.postUrl,method: post,par…

【浅度渣文】Jackson之jackson-core

原文链接&#xff1a;http://www.dubby.cn/detail.html?id9069 我们在这里使用jackson-core提供的JsonParser和JsonGenerator来实现基本的序列化和反序列化。 1.数据和实体类 我们先定义出JSON字符串: {"id":123456789,"text":"我是杨正&#xff0c;…

银河麒麟高级服务器操作系统V10上.NET Core与Java相同类型MySQL(MariaDB) WebApi简单性能对比

目录 前言 一、系统信息 1. 操作系统 2. CPU&#xff08;虚拟机内&#xff09; 3. 内存 二、编译wrk 1.什么时wrk 2.下载编译wrk 三、部署MariaDB 1. 安装MariaDB 2. 启动MariaDB服务 3. 修改root密码 4. 创建sbtest数据库、导入结构及数据 四、压测.NET Core 3.1…

TMS WEB CORE 标准控件

TMS WEB CORE 标准控件 继承自Delphi标准VCL可视控件,所以我们只需要想开发Delphi程序那样开发并控制Web程序就可以了。 下面我们来看看TMS WEB CORE 标准控件的样子 首先我们把控件都拖入IDE编辑器 编译,运行后效果,现在的样子还很丑,Web程序,我们需要样式,后…