
StackExchange.Redis组件
文章平均质量分 66
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
StackExchange.Redis Timeout performing 超时问题
最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动并发情况下有TimeOut bug,项目开发差不多后,我压测了一下,简单的模拟30个用户持续访问某一个有用到缓存的查询接口,结果这么小的压力下超时异常出现:Timeout performing GET my_141 (5000ms), inst: 30, qu: 0, qs: 20, in: 20320, s转载 2021-10-06 17:39:47 · 16129 阅读 · 3 评论 -
如何像连接SQL一样配置Redis连接字符串
在用C#连接SQL数据库时,我们需要在Config配置文件里面配置SQL连接字符串,同样,在连接Redis时,也可以配置连接字符串:="RedisTest" WriteServer="127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1,syncTimeout=1000"/>注释:127.0.0.1:6379:IP,端口password:Redis密码connectTimeout:连接超时时间,这里设置的是转载 2021-09-07 00:31:47 · 3895 阅读 · 0 评论 -
StackExchange.Redis 之 操作Redis链接字符串配置
Redis链接字符串可以提出来放到 Config文件当中: <connectionStrings> <add name="Connection_Redis" connectionString="127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,password=123456,abortConnect=false" /> </connectionStrings>当有多个Redis实例时转载 2021-09-07 00:00:31 · 3806 阅读 · 0 评论 -
redis 业务锁 not exist 模式
背景:业务核心模块只能提交一次,原实现方案 前端加提交限制、后端加数据库业务逻辑判定,结果失效,api站点部署多台负载,切方法需要强求第三方接口 响应时间较慢 ,故放弃lock。解决方案:redis业务锁。一、原理1:利用redis原子性解决并发问题2:利用redis集群署解决分布式部署问题3:利用redis性能快解决时间消耗问题4:利用redis过期时间解决死锁问题5:利用red...转载 2019-06-18 10:59:03 · 838 阅读 · 0 评论 -
redis简单应用
启动和结束–启动redis服务E:\redis>redis-server.exe redis.windows.conf–结束redis服务127.0.0.1:6379> shutdownnot connected>3、修改配置文件的两种方式3.1、运行中使用config set命令修改–连接redis,-h -a E:\redis>redis-cli.e...转载 2019-06-18 10:58:25 · 850 阅读 · 0 评论 -
StackExchange.Redis的常用数据类型
一、CommandFlags 枚举None = 0; //默认HighPriority = 1; //不用了,废弃FireAndForget = 2; //对结果不感兴趣,调用者将会立即收到默认值PreferMaster = 0; //如果主服务器可用,则应在主服务器上执行此操作,但可以执行读操作DemandMaster = 4; //此操作只应在[主站]上执行PreferSlave ...转载 2019-06-18 10:57:47 · 1743 阅读 · 0 评论 -
StackExchange.Redis官方文档(八)【脚本】
脚本我们通过 IServer.ScriptLoad(Async), IServer.ScriptExists(Async), IServer.ScriptExists(Async), IDatabase.ScriptEvaluate, 还有 IDatabaseAsync.ScriptEvaluateAsync 方法来执行 Lua脚本,使用这些方法提交执行Lua脚本到Redis。可以使用 L转载 2017-10-30 17:09:43 · 2693 阅读 · 1 评论 -
StackExchange.Redis官方文档(七)【性能分析】
性能分析StackExchange.Redis 公开了少量的方法和类型来开启性能分析。由于其异步性和多路复用行为,性能分析是一个有点复杂的话题。接口性能分析接口是由这些组成的:IProfiler,ConnectionMultiplexer.RegisterProfiler(IProfiler),ConnectionMultiplexer.BeginProfiling(object)转载 2017-10-30 17:07:34 · 1896 阅读 · 1 评论 -
StackExchange.Redis官方文档(六)【事件,发布订阅,服务器命令】
事件ConnectionMultiplexer 类型公开了多个事件,可以用来了解正在发生的事件。这是非常有用的特别是在记录日志的时候:ConfigurationChanged 当 ConnectionMultiplexer 里面的连接配置被更改后触发ConfigurationChangedBroadcast 通过发布/订阅功能接受到一个重新配置的消息的时候;这通常是由于使用 IServ转载 2017-10-30 17:05:00 · 2054 阅读 · 1 评论 -
StackExchange.Redis官方文档(五)【事务】
Redis中的事务Redis的事务是与SQL数据库不同的。详细了解请参考文档,转述如下:Redis的事务:先以 MULTI 开始一个事务,然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务。当碰到命令:MULTI (标记一个事务块的开始),在该连接上的命令不会执行:它们会排队(调用方会得到每个队列的回复)。当遇到命令:EXEC(执行所有事务块内的命令),它们被应用到一个单独的单元中(比如:转载 2017-10-30 17:01:25 · 2581 阅读 · 2 评论 -
StackExchange.Redis官方文档(四)【键、值以及通道】
键、值以及通道在对待Redis时候,键和其他的事物之间有个相当重要的区别。键是在数据库中一段数据的唯一标识(可能String,List,Hash或者其他的Redis数据类型)。键是没有任何实质意义,就是一个简单的名字。进一步说:当处理集群或者分片系统时,它就是定义在包含数据的节点上的Key,所以对于命令传送来说key是至关重要的。值是相对于键来存储的。要么是单个(String数据)要么一组组的。值不转载 2017-10-30 16:59:43 · 3605 阅读 · 1 评论 -
StackExchange.Redis官方文档(三)【管道和多路复用器】
管道和多路复用器延迟情况是难以忍受的。现代计算机能以惊人的速度生成数据,并且高速互联网(经常是在重要的服务器之间有多个并行连接)提供了极大的带宽,但是这可恶的延迟意味着电脑花了大量时间等待数据。基于延续的编程变得越来越流行的几个原因之一。让我们考虑一些规则的程序代码:string a = db.StringGet("a");string b = db.StringGet("b");按照这些关联的步转载 2017-10-30 16:58:02 · 3467 阅读 · 1 评论 -
StackExchange.Redis官方文档(二)【配置】
配置配置Redis有很多不同的方式,StackExchange.Redis提供了一个丰富的配置模型,我们可在调用 Connect 或者 ConnectAsync 方法时传入配置:var conn = ConnectionMultiplexer.Connect(configuration);在这里参数configure可以是:ConfigurationOptions 实例配置字符串方式配置后面一转载 2017-10-30 16:55:56 · 8293 阅读 · 1 评论 -
StackExchange.Redis官方文档(一)【基本用法】
基本用法ConnectionMultiplexer 类是StackExchange.Redis的中枢对象,它在StackExchange.Redis名称空间中; 这个对象封装了很多基础服务对象的详细信息。由于 ConnectionMultiplexer 做了很多底层处理,它在调用者之间被设计为共享和重用。你不应该为每一个操作都创建一个 ConnectionMultiplexer 对象。该对象是完全转载 2017-10-30 16:53:57 · 9480 阅读 · 1 评论