Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心。 接下来介绍一下.net core 使用Redis的发布/订阅功能。 然后再打开一个Redis客户端,使用命令publish redismessage "消息内容"发布消息 ? 使用.net core 实现 这里我选择的连接驱动为 StackExchange.Redis,这里需要注意的是 ServiceStack.Redis连接驱动已经逐渐商业化,4.0及以上版本都具有限制,所以选择的免费且好用的 StackExchange.Redis,使用nuget安装即可。
前言 Session是我们在web开发中经常使用的对象,它默认是存在本机的,但是在ASP.NET Core中我们可以十分方便的将Session的存储介质改为分布式缓存(Redis)或者数据库(SqlServer 分布式的缓存可以提高ASP.NET Core 应用的性能和可伸缩性 ,尤其是在托管在云中或服务器场环境中 使用 ASP.NET Core 已经为我们实现了Redis缓存。 void ConfigureServices(IServiceCollection services) { services.AddMvc(); //添加redis }); } 2.启用Session public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //使用 ("userid","1000"); 运行项目,可以看到redis已经有我们刚刚访问所创建的Session ?
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis ---- 目录 ASP.NET Core微服务(六)——【.Net Core操作redis RedisDBHelper 使用RedisDBHelper测试 有存储时间的String Redis删除Key:KeyDelete Redis的List操作 redis list范围查询 redis HashSet操作 redis Set操作 Redis ZSET ---- 项目创建 为了测试方便,使用控制台应用程序即可。 这里创建.NET Core 3.1(长期支持) 可以看到,非常干净 StackExchange.Redis操作示例 打开NuGet包管理器,搜索【StackExchange.Redis】,本示例使用的是 故而使用TimeSpan.FromSeconds(double);来输入时间。
关于在ASP.NET Core 2.0下使用Redis的问题,目前StackExchange.Redis已经支持.Net Core 2.0了,而微软提供的Microsoft.Extensions.Caching.Redis.Core 方法,也是对StackExchange.Redis的一种官方封装,是基于StackExchange.Redis的,但是大家反映StackExchange.Redis在.Net Core下高并发容易出现死锁问题 本例是基于CSRedis来实现的,CSRedis 是国外大神写的,经过少量修改,现已支持 .NETCore 使用方法,先新建一个Redis缓存的类库,我这里命名为:Biz126.RedisCache,在该类库下新增一个名为 int.TryParse(Convert.ToString(cfg["Redis:port"]), out int port)) port = 6379; if (! = Convert.ToString(cfg["Redis:ip"]); pass = Convert.ToString(cfg["Redis:pass"]);
本例子讲述一个在.Net core环境中对Redis数据库进行增删改查操作。 首先,要安装好Redis数据库,至于怎么安装,本文不再赘述,可以自行百度,有很详细的教程。 安装好之后,在CMD中输入 redis-cli ? 就会出现Redis数据库的IP和端口,记下,后面链接字符串中要用。 ,然后新建一个.Net Core控制台应用程序。 在程序包管理器控制台中导入Redis数据库的驱动。 PM> Install-Package ServiceStack.Redis 程序包管理器控制台额度打开方式如下: ? using ServiceStack; using ServiceStack.Text; using ServiceStack.Redis; using ServiceStack.DataAnnotations 的连接字符串 var redis = redisManger.GetClient(); //获取一个Redis Client
再次准备Redis容器? 我用docker,所以下载一个Redis 5的配置文件:https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf ? incr,incrby 和 decr,decrby 如果值是数值的话,那么可以使用incr,表示自增。 incr key就会对该key对应的value进行自增: ? 默认的增量是1。 也可以指定增量,使用incrby这个命令。 格式是incrby key 增量值: ? 相应的自减就是decr和decrby: ? ? 在.NET Core 项目中操练String 准备.NET Core项目 安装StackExchange.Redis,然后配置连接,需要密码: ? dotnet run运行: ? 没问题能连上。
//www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565.html Hash Redis 通常在Hash的Key中使用冒号:,这样可以做出来类似命名空间的效果。 user:1000可以表示ID为1000的用户。 HGET HGET通过Hash里面的key获取其对应的值: ? HGETALL 如果想获得Hash所有的Key-Value对,那就使用HGETALL: ? 注意其结果是如何显示的。 用.NET Core操练 准备一个C#对象: ? 然后从网上抄袭了一个C#对象和Redis HashEntry[]之间转换的工具类: ? HSET,HGETALL ? 结果: ? HGET ? HMGET HMGET是使用HashGet的另一个Overload方法: ? 结果: ? HINCRBY ? 结果: ? HDEL ? 结果: ?
目录 一、在centos7上安装redis 二、redis string类型 三、redis list 类型 四、redis hash类型 五、redis sortedset类型 六、redis Subscribe 原码地址:https://github.com/hailang2ll/DMS/blob/master/src/DMS.Core/DMS.Redis/RedisManager.cs 2、在.netcore 个人认为list是非常好用的一个类型,我们可以把Redis的list当成消息队列使用,比如向注册用户发送欢迎邮件的工作,可以在注册的流程中把要发送邮件的邮箱放到list中,另一个程序从list中pop获取邮件来发送 原码地址:https://github.com/hailang2ll/DMS/blob/master/src/DMS.Core/DMS.Redis/RedisManager.cs 2、在.netcore (可以使用FTP) 新服务器 连新服务器,进入到redis数据备份存放的目录: [root@localhost ~]# cd /var/lib/redis[root@localhost redis]#
/www.cnblogs.com/cgzl/p/10301916.html 第4篇 List和Set:https://www.cnblogs.com/cgzl/p/10309415.html 本文介绍Redis 想按分数要从高到低显示,需要使用ZREVRANGE: ? 也可以一同把分数显示出来,使用参数WITHSCORES: ? 在.NET Core 项目里操练 ZADD,ZRANGE ? ZREVRANGE,WITHSCORES ? 结果: ? ZRANGEBYSCORE ? 结果: ?
三.aspnet-zero-core 如何使用Redis缓存 项目“MyCompanyName.MyProject.Web.Core” 以下简称“Web.Core” 项目“MyCompanyName.MyProject.Web.Mvc ” 以下简称“Web.Mvc” 使用Redis缓存,请先通过nuget安装包 Abp.RedisCache 1.打开项目“Web.Core” 的“AbpZeroTemplateWebCoreModule.cs 思考:我们都知道Redis是跨进程甚至跨域的缓存,有时候我们没必要使用Redis缓存,使用本机缓存就够,我想一定会存在同时使用Redis缓存和本机缓存即 MemoryCache, ABP默认应该是不支持存在多个缓存 可以发现在上图红框处注入了 AbpRedisCacheManager ,,然后可想而知我们在使用缓存的时候通过容器注入的就是Redis缓存了,那么我们只需要将MemoryCache也注入即可同时使用Redis 好了Redis的设置十分简单,下篇将会给大家分享一下,我在core下使用通过mysql数据库来进行存储的hangfire的那些坑~ 如果你觉得写的不错,请点一下下面的“推荐”,这是对我分享技术经验的支持
ASP.NET Core 使用 Redis 实现分布式缓存:Docker、IDistributedCache、StackExchangeRedis 前提:一台 Linux 服务器、已安装 Docker。 中文网 https://www.redis.net.cn/ .NET 使用 Redis 学习 地址(貌似这个教程版本过时了) https://www.cnblogs.com/cang12138/p/8884362 使用 Redis Desktop Manager 连接 Redis ? 二,ASP.NET Core 使用分布式缓存 ASP.NET Core 中,支持使用多种数据库进行缓存,ASP.NET Core 提供了统一的接口给开发者使用。 IDistributedCache ASP.NET Core 中,使用 IDistributedCache 为开发者提供统一的缓存使用接口,而不必关注使用的是何种数据库。
但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可以使用Sorted Set,这个一会再说。 自动创建和移除Key 通过Redis的命令我们可以发现, 当我们为集合添加元素的时候,如果集合的key不存在,那么Redis会为我们创建一个空的集合,然后再执行插入操作: ? .NET Core 操练LIST LPUSH,RPUSH,LRANGE ? 结果: ? LPOP,RPOP ? 结果: ? LTRIM ? 结果: ? SUNIONSTORE 把多个set合并到一个set里可以使用SUNIONSTORE,格式是sunionstore 目标set set1 set2 ...: ? .NET Core 操练SET SADD,SMEMBNERS ? 结果: ? SISMEMBER ? 结果: ? SINTER ? 结果: ? SPOP ? 结果: ? SUNIONSTORE ?
消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 使用的版本为3.6.12最新版。 .NET Core 使用RabbitMQ 通过nuget安装:https://www.nuget.org/packages/RabbitMQ.Client/ 定义生产者 //创建连接工厂 ConnectionFactory 使用RabbitMQ的Exchange 前面我们可以看到生产者将消息投递到Queue中,实际上这在RabbitMQ中这种事情永远都不会发生。 所以,Topic Exchange 使用非常灵活。
NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。 Redis协议基础实现Redis/RedisClient位于X组件,本库为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。 源码: https://github.com/NewLifeX/NewLife.Redis Nuget:NewLife.Redis ---- 特性 在ZTO大数据实时计算广泛应用,200多个Redis实例稳定工作一年多 避免单个实例内存撑爆 把海量数据(10亿+)根据key哈希(Crc16/Crc32)存放在多个实例上,读写性能成倍增长 采用二进制序列化,而非常见Json序列化 合理设计每一对Key的Value大小,包括但不限于使用批量获取 ,原则是让每次网络包控制在1.4k字节附近,减少通信次数 Redis客户端的Get/Set操作平均耗时200~600us(含往返网络通信),以此为参考评估网络环境和Redis客户端组件 使用管道Pipeline
/Basics 本文内容介绍 StackExchange.Redis 的使用基础,然后介绍 ASP.NET Core 中的缓存、如何使用 Redis。 连接 Redis 创建一个 .NET Core 项目,Nuget 库添加引用 StackExchange.Redis ,使用最新版本。 当然这个说法不是很准确,使用 RedisValue 主要考虑转换方便。 ? 入门的知识就介绍到这里,更多的 Redis 知识可以查看官方文档。下面开始介绍 AS.NET Core 使用分布式缓存。 适合 ASP.NET Core 中使用。 估计大家可能没怎么使用? ASP.NET Core 官方支持的分布式缓存,目前主要有 NCache、Redis、SqlServer。本节只讨论 Redis。
系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式 2.安装RabbitMQ 网上有许多RabbitMQ的安装博客,所以在此不介绍 LINUX安装 WINDOWS安装 3..NET Core 中使用RabbitMQ RabbitMQ从信息接收者角度可以看做三种模式,一对一,一对多(此一对多并不是发布订阅,而是每条信息只有一个接收者)和发布订阅。 其中一对一是简单队列模式,一对多是Worker模式,而发布订阅包括发布订阅模式,路由模式和通配符模式,为什么说发布订阅模式包含三种模式呢,其实发布订阅,路由,通配符三种模式都是使用只是交换机(Exchange " + message); } } } } } } 可以看到RabbitMQ使用了 IConnectionFactory,IConnection和IModel来创建链接和通信管道,IConnection实例对象只负责与Rabbit的连接,而发送接收这些实际操作全部由会话通道进行, 而后使用
写在前面 我一直以来使用redis的时候,很多低烈度需求(并发要求不是很高)需要用到消息队列的时候,在项目本身已经使用了Redis的情况下都想直接用Redis来做消息队列,而不想引入新的服务,kafka ,基于上坑,据我所知大家很少使用Pub/Sub ; 不过官方的哨兵集群通信的时候就是用的Pub/Sub; 然后,各路大佬结合队列、阻塞等等实现了各种各样的方案,主要是使用:BLPOP+LPUSH 终于,到了Redis5.0,官方带来了消息队列的实现:Stream。 Redis Stream介绍 简单来说Redis Stream 就是想用Redis 做消息队列的最佳推荐; XADD--发布消息 XADD stream1 * name hei age 18 XADD 已经把这条消息标记为「处理完成」不再追踪; Stream在Asp.net Core中的使用 private static string _connstr = "172.16.3.119:6379";
前言:上篇文章介绍了.net core+Redis+IIS+nginx实现Session共享,本来打算直接说明后续填坑过程,但毕竟好多坑是用docker部署后出现的,原计划简单提一下.net core+ 1、环境准备 操作系统:Windows10 VS2019、本地Redis数据库、Windows docker 2、背景介绍 由于项目从asp.net MVC向.net core webapi迁移,一方面是技术方面的迁移 3、.net core+Redis+docker实现Session共享 如果你的项目是用IIS或其它方式部署,那么这部分你可以直接跳过了,因为代码部分跟上篇文章是一样的。 无非是使用windows docker 命令进行部署。 生成镜像(最后面的.不能去掉):docker build -f /Redis使用测试/RedisSessionTest/RedisSessionTest/Dockerfile -t testcore .
最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动并发情况下有 some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis 蛋疼了很久,搜了很多文章,得到以下 解决方案 1、换掉,不用这个驱动( 可以看看.net core redis 驱动推荐,为什么不使用 StackExchange.Redis) 2、redis操作修改为全部异步 ,也就是系统创建的工作线程数不足以满足redis的Get操作的繁忙线程的需求,导致部分Get操作的线程堵塞超时了; 所以我们把“最小线程workerThreads” 修改为200解决问题; 200是我估摸着生产环境服务器设置的
目录 一、前言 二、Java使用Redis 三、总结 四、历史文章指路 一、前言 上文【Redis系列】一文带你入门Redis 介绍如何搭建Redis环境,并对Redis做了基本介绍,这篇则介绍通过Java 使用Redis,首先引入Redis依赖,主要方法有:连接Redis,插入Redis,查询Redis,删除Redis,批量查询Redis。 二、Java使用Redis <! -- Redis依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> = null) { jedis.auth("root"); //如redis没有设置密码, 则无需添加此行 System.out.println("连接Redis成功"
云数据库 Redis,数据库缓存,数据库存储,云数据库 云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。 云数据库Redis是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
扫码关注腾讯云开发者
领取腾讯云代金券