首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的Redis这么“慢”?

如果过期 Key 的比例超过了 25%,则继续获取 20 个 Key,删除过期的 Key,循环往复,直到过期 Key 的比例下降到 25% 或者这次任务的执行耗时超过了 25 毫秒,才会退出循环。...此时你需要检查你的业务,是否真的存在集中过期的代码,一般集中过期使用的命令是 expireat 或 pexpireat 命令,在代码中搜索这个关键字就可以了。...之后把剩下的 Key 暂存到一个池子中,继续随机取出一批 Key,并与之前池子中的 Key 比较,再淘汰一个最少访问的 Key。以此循环,直到内存降到 maxmemory 之下。...下面就针对这两块,分享一下我认为比较合理的 Redis 使用和运维方法,不一定最全面,也可能与你使用 Redis 的方法不同,但以下这些方法都是我在踩坑之后总结的实际经验,供你参考。...总结 以上就是我在使用 Redis 和开发 Redis 相关中间件时,总结出来 Redis 推荐的实践方法,以上提出的这些方面,都或多或少在实际使用中遇到过。

3.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码模板 | 我的代码没有else

    比如抽奖系统的抽奖接口,为什么: 抽奖的步骤是稳定不变的 -> 不变的算法执行步骤 不同抽奖类型活动在某些逻辑处理方式可能不同 -> 变的某些算法 怎么用「模板模式」?...关于怎么用,完全可以生搬硬套我总结的使用设计模式的四个步骤: 业务梳理 业务流程图 代码建模 代码demo 业务梳理 我通过历史上接触过的各种抽奖场景(红包雨、糖果雨、打地鼠、大转盘(九宫格)、考眼力、...------------ //我的代码没有`else`系列 //模板模式 //@auhtor TIGERB //------------------...//------------------------------------------------------------ //我的代码没有`else`系列 //模板模式 //@auhtor TIGERB...我的代码没有`else`,只是一个在代码合理设计的情况下自然而然无限接近或者达到的结果,并不是一个硬性的目标,务必较真。 2.

    1K30

    为什么我的数据库应用程序这么慢?

    这是一个普遍的问题吗?还是比别人慢一些? 最好小开始。如果您可以专注于特别缓慢的应用程序的某个特定区域,那么可以让生活更轻松,例如,当您点击发票页面上的“全选”按钮时,加载结果需要10秒钟。...专注于一个小型可重复的工作流将让您隔离问题。 接下来的问题当然是为什么要花10秒钟?缩小问题的第一个也是最简单的方法是将应用程序尽可能靠近SQL Server,在同一台机器上或在同一个LAN上运行。...首先通过捕获工作流的Profiler跟踪,只需使用“标准(默认)”跟踪模板。 确保没有其他的东西在同一时间触发数据库,所以你只捕获你的流量。...此外,Jonathan Kehayias的书非常适合对SQL Server中常见的性能问题进行故障排除。 相反,如果大部分时间花在客户端处理中,您可能需要考虑对应用程序代码进行分析以查找问题。...一个聊天应用程序是发送许多重复和不必要的查询,使得更多的网络往返行程比必要。 通常,这些应用程序最初是在高速LAN上开发并部署的,所以“chattiness”从来没有真正引起问题。

    2.3K30

    慢SQL探秘之为什么我的SQL很慢却没记录在慢查询日志里

    在MySQL数据库中,想了解数据库运行情况的重要指标之一是慢SQL。而并非如某些人所说的所有运行慢的SQL都会被记录在慢SQL日志(或日志表)里,抑或是没有慢SQL就代表没有运行慢的SQL。...本文将总结一些比较常见的运行比较慢但不会被记录在慢SQL日志里的情况。...log_slow_slave_statements: 如果设置为1,则将从服务器执行的慢SQL记录到主服务器的慢SQL日志中。默认值为0(禁用)。...SQL运行时间小于慢SQL监控阈值时间 第一部分已经介绍了和慢SQL相关的参数中的long_query_time,即慢SQL阈值。...SQL监控的阈值,例如TP业务的实例且配置相对较好时,建议阈值设置的较低;如果是AP类型业务,则适当放宽慢SQL的阈值。

    37710

    为什么我觉得GoFrame的garray比PHP的array还好用?

    前言 写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活。 我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!...初识GoFrame 最近在使用基于Go语言的GoFrame框架开发项目,发现GoFrame封装的garray竟然比PHP的array还要好用。...注意:为了行文紧凑,下面的代码段都省略了import的包依赖,小伙伴们参考这篇文章敲代码时,编辑器能自动补全缺少的import。...看到这个方法,更坚信了我一个观点:GF的作者一定写了几年PHP。...天然支持升序遍历、遍历修改 天然支持序列化和反序列化 大家是不是明显感觉到GoFrame的garray比PHP的array还要好用。

    67041

    为什么程序媛比程序猿写的代码更好?

    导语:最近看到有新闻说:科学表明女性更适合当程序员,研究显示女性“程序媛”写的代码更好。我感觉说的挺对的,女生的心思就是比男生缜密,男生你还别不服气,谁让你好色呢?我靠,我又说实话了。...爱达设计了巴贝奇分析机上解伯努利方程的一个程序,并证明当时的19世纪计算机狂人巴贝奇的分析器可以用于许多问题的求解。她甚至还建立了循环和子程序的概念。...说到这里,你们貌似好像还没有看出为什么程序媛比程序猿写的代码更好?...当然了,研究者研究的比较片面,我可以道出其中的真理,这才是我们男人的反转。哈哈…… 那为什么呢?俗话说:万花丛中过,片叶不沾身。你信么?...其实对于这个解释,我更相信下面的这个解释:每个女程序媛背后都有一群男程序猿。哈哈……是不是,对不对,这才是正解。女生提交的代码质量高?是男生帮这些女生改代码的时候比较用心吧!

    851100

    为什么我的sql没问题但还是这么慢|MySQL加锁规则

    元数据锁(metadata lock) MDL锁不需要显式使用,在访问一个表的时候会被自动加上,并且当事务完成提交时释放。...或许此时你已经对于为什么多人调试程序时数据库访问不时出现卡顿有了一些自己的想法,当然这只是锁机制的冰山一角。...此时你是否又对我最初给出的小组开发时访问数据库慢的场景有了自己的思考,其实在高QPS情况下,发生死锁检测的概率是大大高于小组开发场景的 因此控制热点记录的并发访问数量,是提升数据库IO性能的重要前提。...关于多版本并发控制(MVCC)这里我没有过多深入讲解,详情给出我的另一篇文章:https://juejin.cn/post/7085185961239248927 快照读 对于普通的查询操作,你大致了解...上面讲解死锁检测的时候我用更新语句获得了行记录的写锁,而这里,通过增加for update后缀,可以使得当前读操作也获取行记录的写锁。

    83630

    我理解的元宇宙,为什么游戏公司股价狂飙?

    最近一段时间元宇宙特别火,各个游戏公司的股价一路上涨,我想说真TM操蛋,这都是什么事,这就上涨了?他们做了什么? 什么是元宇宙?...元宇宙的形态 灵魂 大部分应该都知道灵魂和肉体的关系,不知道我们所处的世界是不是就是元宇宙,在奇异博士中奇异博士的灵魂离开肉体,看着身边的世界,这样的第三视角是不是就是我们口中的元宇宙,作为游戏中的人物...元宇宙的技术逻辑 元宇宙现在更多的是概念,也就是胡扯,如果真的想要完成一个demo级别的元宇宙,元宇宙的核心承载现在是游戏,所以这也就是解释了为什么游戏公司都搞些元宇宙概念,因为游戏公司更有虚拟这方面的经验...元宇宙的沉浸感是元宇宙的必需元素,但是这种也是我担心的,游戏已经在防沉迷了,元宇宙会走向何处? 为什么都扑向元宇宙 元宇宙的前景太厉害了,不得不说可能将很多的现实世界搬到元宇宙。...可能存在的问题 元宇宙的内容很强大,如果元宇宙太过于强大,但是受一家公司控制,这样的控制粒度必然带来很多问题,比如个人隐私问题, 甚至是元宇宙内的一些犯罪问题,如何规范的管理元宇宙,让元宇宙在受控下进行发展

    57420

    JavaScript中Promise里的代码为什么比setTimeout先执行?

    不过,术语本身并非我们需要重点讨论的内容,我们在这里把重点放在事件循环的原理上。...在底层的 C/C++ 代码中,这个事件循环是一个跑在独立线程中的循环,我们用伪代码来表示,大概是这样的: while(TRUE) { r = wait(); execute(r); }...当然,实际的代码中并没有这么简单,还有要判断循环是否结束、宏观任务队列等逻辑,这里为了方便你理解,我就把这些都省略掉了。 这里每次的执行过程,其实都是一个宏观任务。...我们可以大概理解:宏观任务的队列就相当于事件循环。...在这段代码中,我设置了两段互不相干的异步操作:通过 setTimeout 执行 console.log(“d”),通过 Promise 执行 console.log(“c”)。

    88620

    为什么我写不出面向对象的代码

    那时书本或者网上是这么解释的 ““面向对象”是专指在程序设计中采用封装、继承、多态和抽象等设计方法。 ” 那么上面的案例代码也有抽象,也有封装,为什么还是算面向过程思维呢。 那么什么是面向对象呢?...关于DDD领域驱动设计,推荐书籍: “《领域驱动设计:软件核心复杂性应对之道》 《实现领域驱动设计》 ” 为什么我们在使用贫血模型 看了上面的代码,我们可能会疑问:我使用贫血模型开发挺好的啊?...为什么还要使用充血模型?也没看出什么不一样啊? 传统开发模式的贫血模型,将数据与业务彻底隔离。...因此我总结为什么人们更愿意使用贫血模型呢: “ 充血模型相对贫血模型存在一定的设计难度,你需要多花时间思考哪些是对象本身的行为 面向过程的编程思想根深蒂固,很难改变 对代码没有太大负责态度,认为怎么简单怎么来...那么建议你多做一些的思考: 1.我的代码是不是面向对象的代码 2.我的代码设计是否遵循 高内聚,低耦合的设计标准 3.我的代码是否遵循设计原则,如单一职责原则,开闭原则等 4. ...

    1.2K20

    JavaScript执行(一):Promise里的代码为什么比setTimeout先执行?

    不过,术语本身并非我们需要重点讨论的内容,我们在这里把重点放在事件循环的原理上。...在底层的 C/C++ 代码中,这个事件循环是一个跑在独立线程中的循环,我们用伪代码来表示,大概是这样的: while(TRUE) { r = wait(); execute(r); }...当然,实际的代码中并没有这么简单,还有要判断循环是否结束、宏观任务队列等逻辑,这里为了方便你理解,我就把这些都省略掉了。 这里每次的执行过程,其实都是一个宏观任务。...我们可以大概理解:宏观任务的队列就相当于事件循环。...在这段代码中,我设置了两段互不相干的异步操作:通过 setTimeout 执行 console.log(“d”),通过 Promise 执行 console.log(“c”)。

    59710

    for循环太Low?分享几段我工作中经常使用的for代码!

    前言 不管是for循环还是while循环,都是任何一门语言的基础知识,同时也是非常重要的知识。借助于循环的策略,可以将很多重复性的问题完美地解决。...在Python中,大家可能对她的印象是“Python不适合使用循环,因为效率低,速度慢!”,但是本文中将重点介绍她,并跟大家分享我工作常用的几段代码示例(如果你想实操,文末有数据下载链接)。...如上图所示,图中包含for循环过程中的三个部分,分别是漏斗、漏斗内的元素以及漏斗以下的结构,这三个部分构成了for循环的核心。...上图中,左右两个示意图的唯一区别在于,for循环的循环体是否包含if分支判断。...案例3:词频统计 如下图所示,这是一篇新闻报道,如何基于该报道完成词频统计的操作?由于实际工作中评论数据的分析会涉及到敏感信息,故这里用新闻报道代替,但下文中所介绍的代码核心部分基本类似。: ?

    95020

    for循环太Low?分享几段我工作中经常使用的for代码!

    作者:刘顺祥 来源:数据分析1480 前言 不管是for循环还是while循环,都是任何一门语言的基础知识,同时也是非常重要的知识。借助于循环的策略,可以将很多重复性的问题完美地解决。...在Python中,大家可能对她的印象是“Python不适合使用循环,因为效率低,速度慢!”,但是本文中将重点介绍她,并跟大家分享我工作常用的几段代码示例(如果你想实操,文末有数据下载链接)。...如上图所示,图中包含for循环过程中的三个部分,分别是漏斗、漏斗内的元素以及漏斗以下的结构,这三个部分构成了for循环的核心。...上图中,左右两个示意图的唯一区别在于,for循环的循环体是否包含if分支判断。...案例3:词频统计 如下图所示,这是一篇新闻报道,如何基于该报道完成词频统计的操作?由于实际工作中评论数据的分析会涉及到敏感信息,故这里用新闻报道代替,但下文中所介绍的代码核心部分基本类似。: ?

    1K40

    为什么我的系统慢?“三大分离”架构上了吗?(5000字长文,收藏)

    第二大分离:读写分离 优化效果:快速线性提升系统的读性能。 相关内容: (1)读写分离与实践; (2)水平切分与实践; (3)为什么有些互联网公司不喜欢读写分离架构?...; 既然静态页面访问快,动态页面生成慢,有没有可能,将原本需要动态生成的站点提前生成好,使用静态页面加速技术来访问呢?...)像58同城这样的信息模式业务,有几十亿的帖子量,就不太适合于静态化(碎片文件多,反而访问慢); 【3】读写分离 什么是数据库读写分离?...一句话总结,水平切分主要解决“数据库数据量大”问题,在数据库容量扛不住的时候,通常水平切分。 为什么有些公司不喜欢读写分离?...; (3)有潜在的主库从库一致性问题; (4)如果面临的是“读性能瓶颈”问题,增加缓存可能来得更直接,更容易一点; (5)关于成本,从库的成本比缓存高不少; (6)对于云上的架构,以阿里云为例,主库提供高可用服务

    9510

    为什么if-else会影响我的代码的复杂度

    关于if-else的争议 我之前写了一篇文章《我用规则引擎消除if语句,提高了代码的可扩展性》,这篇文章我想阐述的观点是复杂的if语句可能会影响代码的阅读和代码的扩展性,会将非业务的条件逻辑与业务逻辑混合在一起...时间长了代码会越来越臃肿,因此这种情况下我推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来的问题,文中我发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...这里我要阐明我的一个观点: “我的观点并不是说,我们在编码时不能使用if-else,而是说我们不应该简陋地用if-else去实现业务的分支流程,因为这样随意的代码堆砌很容易堆出一座座"屎山"。...” 当我们存在不同的业务逻辑时,我们通常习惯使用if-else来实现这些不同的逻辑,时间长了,代码就会难以维护。我相信大部分人写过下面类似的代码。...屎山代码雏形 上面的代码(基于实际项目的伪代码),大家看了后有什么感想。如果我们需要修改上面的条件逻辑,我相信编码者本人都会被这样的代码绕晕,更不用说后面接手的开发了。

    1.5K10

    回波总 - 为什么我不赞同你关于 ANTLR 不适合模板引擎的意见

    波总好, 在谈谈我对 JFinal Marketing 的一些看法那篇博文的评论中 我们谈论到了 ANTLR, 这里继续和波总谈谈在技术上我对这方面的理解. 先说下 ANTLR 到底什么....所以波总认为: 我仅仅只是认为 antrl 用于模板引擎并不是个好主意,不是最好的方案,enjoy 的方案更好。...这个地方我觉得有点奇怪了, 使用 ANTLR 的直接结果就是生成 Parser, 不仅仅对模板引擎如此, 在所有使用场景下都是一样的...." 的问题, 所以不知道 ANTLR 用于模板引擎并不是个好主意吗?...是一个中间结果, 对于这个中间结果的细致打磨当然应该回到 g 语法文件; 这个道理和 .class 文件中有问题应该回到原始的 .java 源代码去修改一样, 没有人会试图去"打磨"生成的 class

    1.1K30

    MySQL实战第十九讲-为什么我只查一行的语句,也执行这么慢?

    一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。...这里隐含的一个逻辑就是,连接被断开的时候,会自动回滚这个连接里面正在执行的线程,也就释放了 id=1 上的行锁。 第二类:查询慢 经过了重重封“锁”,我们再来看看一些查询慢的例子。...作为确认,你可以看一下慢查询日志,注意,这里为了把所有语句记录到 slow log 里,我在连接后先执行了 set long_query_time=0,将慢查询日志的时间阈值设置为 0。...扫描行数多,所以执行慢,这个很好理解。 但是接下来,我们再看一个只扫描一行,但是执行很慢的语句。...小结 今天我给你举了在一个简单的表上,执行“查一行”,可能会出现的被锁住和执行慢的例子。这其中涉及到了表锁、行锁和一致性读的概念。 在实际使用中,碰到的场景会更复杂。

    99430
    领券