随笔分类 - Cache
摘要:本文介绍的 MetaQ/RocketMQ 是侧重于维持消息一致性和高可靠性的消息队列中间件,帮助大家对队列设计的理解。
阅读全文
摘要:简述 上篇文章介绍了如何搭建 prometheus 监控体系,监控 linux 服务器,这篇文章跟大家介绍如何监控 redis,以及我们要关注的指标都有哪些 监控 redis 需要关注什么指标 在《聊聊监控》这篇文章,介绍了 google 提出的监控四个黄金指标(没看过的朋友可以看看这篇文章),下面
阅读全文
摘要:引言 我们都知道,Redis 的数据存储在内存中, 一旦服务器宕机,内存中的数据将全部丢失。因此,对 Redis 来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的。本篇我们详细讲解下 Redis 的三种持久化机制,分别是 AOF(Append Only File) 日志和 RDB 快
阅读全文
摘要:本篇文章主要是对方案性能优化2.0中,所做的缓存设计的过程、方案、结果做一个总结。 一、前言 对于方案中心,核心业务场景之一是物流场景下的物流费用计算。而部分业务场景下,对于物流费用计算的性能有较高要求,如ICBU网站运费模板链路,通方案中心计算快递、海拼物流费用。在接入新的流量场景的背景下(ICB
阅读全文
摘要:Redis(REmote DIctionary Service)是一个开源的键值对数据库服务器。
Redis 更准确的描述是一个数据结构服务器。Redis 的这种特殊性质让它在开发人员中很受欢迎。
阅读全文
摘要:轻便式Redis Monitor是面向研发人员的图形可视化监控工具,借鉴了LEPUS(天兔)监控平台以及redis-cli info命令输出的监控指标项,去掉了一些不必要、看不懂的监控项,目前采集了数据库连接数、QPS、内存使用率统计和同步复制延迟时长。
Redis Monitor可以监控单机模式、哨兵模式、集群模式,并且录入一个主库或者从库IP,自动发现主库或者从库IP信息,无需人工再次录入。
采用远程连接方式获取数据,所以无需在Redis服务器端部署相关agent或计划任务,可实现微信和邮件报警。
注:监控环境为Redis 6.2以上版本。
阅读全文
摘要:本文我们来探讨下如何引入分布式锁解决本地锁的问题。本篇所有代码和业务基于我的开源项目 PassJava。
阅读全文
摘要:1.说说 Redis 基本数据类型有哪些吧 1.字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改
阅读全文
摘要:今天跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤!
阅读全文
摘要:Redis 和 memcache 的区别,Redis 支持的数据类型应用场景
redis 支持的数据结构更丰富(string,hash,list,set,zset)。memcache 只支持 key-value 的存储;
redis 原生支持集群,memcache 没有原生的集群模式。
阅读全文
摘要:在写开源项目的时候,想到了要支持多种redis部署方式,于是对于这块的生产环境的架构选型展开调研。
推荐使用更新的引擎版本以支持更多的特性,
Redis 6.0新特性说明
模块系统新增多个API。
支持SSL/TLS加密。
支持新的Redis协议:RESP3。
服务端支持多模式的客户端缓存。
支持多线程IO。
副本中支持无盘复制(diskless replication)。
Redis-benchmark新增了Redis集群模式。
支持重写Systemd。
支持Disque模块。
阅读全文
摘要:工作中总是遇到数据存储相关的 Bug 工单,新需求开发设计中也多多少少会有数据模型设计和存储相关的问题。经过几次存储方案设计选型和讨论后发现需要有更全面的思考框架。
日常开发中常用的存储方案选型很多都是 “拿来主义” 的,凭借着经验、习惯选用,但对它们的细节特性或约束少有研究。
除了手边会用的存储方案,也应该关注市面上更合适的存储方案。
一定的技术预研和储备能够帮助未来更好的技术方案设计。
故写了这篇文章,抛出我的观察和思考,希望日后可以将一些更先进 (合适) 的技术引入公司业务,助力业务发展。
阅读全文
摘要:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,削峰填谷等问题。实现高性能、高可用、可伸缩和最终一致性架构。
阅读全文
摘要:现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的?
我使用 Redis 的场景很简单,只使用单机版 Redis 会有什么问题吗?
我的 Redis 故障宕机了,数据丢失了怎么办?如何能保证我的业务应用不受影响?
为什么需要主从集群?它有什么优势?
什么是分片集群?我真的需要分片集群吗?
...
如果你对 Redis 已经有些了解,肯定也听说过「数据持久化、主从复制、哨兵、分片集群」这些概念,它们之间又有什么区别和联系呢?
如果你存在这样的疑惑,这篇文章,我会从 0 到 1,再从 1 到 N,带你一步步构建出一个稳定、高性能的 Redis 集群。
在这个过程中,你可以了解到 Redis 为了做到稳定、高性能,都采取了哪些优化方案,以及为什么要这么做?
掌握了这些原理,这样平时你在使用 Redis 时,就能够做到「游刃有余」。
阅读全文
摘要:1、想要提高应用的性能,可以引入「缓存」来解决
2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」
3、更新数据库 + 更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机器性能浪费」的情况发生
4、在更新数据库 + 删除缓存的方案中,「先删除缓存,再更新数据库」在「并发」场景下依旧有数据不一致问题,解决方案是「延迟双删」,但这个延迟时间很难评估,所以推荐用「先更新数据库,再删除缓存」的方案
5、在「先更新数据库,再删除缓存」方案下,为了保证两步都成功执行,需配合「消息队列」或「订阅变更日志」的方案来做,本质是通过「重试」的方式保证数据一致性
6、在「先更新数据库,再删除缓存」方案下,「读写分离 + 主从库延迟」也会导致缓存和数据库不一致,缓解此问题的方案是「延迟双删」,凭借经验发送「延迟消息」到队列中,延迟删除缓存,同时也要控制主从库延迟,尽可能降低不一致发生的概率。
阅读全文
摘要:排行榜适合用zset
缓存用户信息一般用hash
消息队列,文章列表适用用list
用户标签、社交需求一般用set
计数器、分布式锁等一般用String类型
不能使用 keys指令
慎用O(n)复杂度命令,如hgetall等
慎用Redis的monitor命令
禁止使用flushall、flushdb
注意使用del命令
阅读全文
摘要:你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题:
我的 Redis 内存为什么增长这么快?
为什么我的 Redis 操作延迟变大了?
如何降低 Redis 故障发生的频率?
日常运维 Redis 需要注意什么?
部署 Redis 时,如何做好资源规划?
Redis 监控重点要关注哪些指标?
尤其是当你的项目越来越依赖 Redis 时,这些问题就变得尤为重要。
阅读全文