![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 92
6曦轩
一个家事复杂的程序员
一个没有感情的广东人
展开
-
Redis后传-优化神技
好久没分享博文了,换了个公司确实比较忙,但是接下来还是会持续输出自己的一些内容,希望各位多多支持,这样我才更加有动力继续下去~最近一直在做优化的东西,也查了很多相关方面的资料,那今天就跟大家分享一些关于redis的优化神技,当你工作中遇到如下问题,那就使出今天学到的绝招,一招定乾坤!原创 2022-10-07 23:32:56 · 267 阅读 · 1 评论 -
【合】Redis 实战篇——高并发下的 Redis
高并发问题在Redis 存储的所有数据中,有一部分是被频繁访问的。有两种情况可能会导致热点问题的产生,一个是用户集中访问的数据,比如抢购的商品,明星结婚和明星出轨的微博。还有一种就是在数据进行分片的情况下,负载不均衡,超过了单个服务器的承受能力。热点问题可能引起缓存服务的不可用,最终造成压力堆积到数据库。出于存储和流量优化的角度,我们必须要找到这些热点数据。热点数据发现除了自动的缓存淘汰机制之外,怎么找出那些访问频率高的 key 呢?或者说,我们可以在哪里记录 key 被访问的情况呢?客户端第一原创 2021-02-28 16:07:25 · 341 阅读 · 0 评论 -
【合】Redis 实战篇——数据一致性问题处理方案
1 Redis 客户端1.1 客户端通信原理客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。客户端和服务器发送的命令或数据一律以 \r\n (CRLF 回车+换行)结尾。如果使用 wireshark 对 jedis 抓包:环境:Jedis 连接到虚拟机 202,运行 main,对 VMnet8 抓包。过滤条件:ip.dst==192.168.8.202 and tcp.port in {6379} set qingshan 抓包:可以看到实际发出的数据包是:原创 2021-02-28 14:51:30 · 563 阅读 · 0 评论 -
【合】Redis 实战篇——Redis 客户端(Jedis,Luttece,Redisson)
Redis 客户端客户端通信原理客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。客户端和服务器发送的命令或数据一律以 \r\n (CRLF 回车+换行)结尾。如果使用 wireshark 对 jedis 抓包:环境:Jedis 连接到虚拟机 202,运行 main,对 VMnet8 抓包。过滤条件:ip.dst==192.168.8.202 and tcp.port in {6379} set qingshan 抓包:可以看到实际发出的数据包是:*3\r\原创 2021-02-27 16:45:36 · 1020 阅读 · 0 评论 -
【转】Redis 分布式——可用性保证之 Sentinel(实战篇)
Sentinel 实战Sentinel 配置为了保证 Sentinel 的高可用,Sentinel 也需要做集群部署,集群中至少需要三个 Sentinel 实例(推荐奇数个,防止脑裂)。hostname IP 地址 节点角色&端口master 192.168.8.203 Master:6379 / Sentinel : 26379slave1 192.168.8.204 Slave :6379 / Sentinel : 26379Slave2 192.168.8.205 Slave :6原创 2021-02-19 21:15:03 · 389 阅读 · 2 评论 -
Redis一主二从Sentinel监控配置
开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Leader)。本例通过3个Sentinel实例监控3个Redis服务(1主2从)。IP地址 节点角色&端口192.168.8.203 Master:6379 / Sentinel : 26379192.168.8.204 Slave :6379 / Sentinel : 26379192.168.8.205 Slave :6379 / Sentinel : 26379防火墙记得关闭!!!原创 2021-02-18 23:33:07 · 199 阅读 · 2 评论 -
CentOS 7单机安装Redis Cluster(3主3从)
为了节省机器,我们直接把6个Redis实例安装在同一台机器上(3主3从),只是使用不同的端口号。机器IP 192.168.8.207更新:新版的cluster已经不需要通过ruby脚本创建,删掉了ruby相关依赖的安装cd /usr/local/soft/redis-5.0.5mkdir redis-clustercd redis-clustermkdir 7291 7292 7293 7294 7295 7296复制redis配置文件到7291目录cp /usr/local/原创 2021-01-24 22:29:57 · 189 阅读 · 0 评论 -
【转】Redis 分布式——可用性保证之 Sentinel(原理篇)
可用性保证之 SentinelSentinel 原理如何实现主从的自动切换?我们的思路:创建一台监控服务器来监控所有 Redis 服务节点的状态,比如,master 节点超过一定时间没有给监控服务器发送心跳报文,就把 master 标记为下线,然后把某一个 slave 变成 master。应用每一次都是从这个监控服务器拿到 master 的地址。问题是:如果监控服务器本身出问题了怎么办?那我们就拿不到 master 的地址了,应用也没有办法访问。那我们再创建一个监控服务器,来监控监控服务器…原创 2021-01-16 15:42:14 · 165 阅读 · 0 评论 -
【转】Redis 分布式——Redis 主从复制
为什么需要 Redis 集群为什么需要集群?性能Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响。这个时候我们希望有更多的 Redis 服务来完成工作。扩展第二个是出于存储的考虑。因为 Redis 所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。可用性第三个是可用性和安全的问题。如果只有一个 Redis 服务,一旦服务宕机,那么所有的客户端都无法访问,会对业务造成很大的影响。另原创 2020-12-27 13:49:06 · 216 阅读 · 0 评论 -
【承】Redis 原理篇——Redis 高性能深入剖析
Redis 为什么这么快?Redis 到底有多快?https://redis.io/topics/benchmarkscd /usr/local/soft/redis-5.0.5/srcredis-benchmark -t set,lpush -n 100000 -q结果(本地虚拟机):SET: 51813.47 requests per second —— 每秒钟处理 5 万多次 set 请求LPUSH: 51706.31 requests per second —— 每秒钟处理 5 万原创 2020-11-01 14:31:21 · 660 阅读 · 0 评论 -
【承】Redis 原理篇——Redis 的内存回收机制
内存回收Reids 所有的数据都是存储在内存中的,在某些情况下需要对占用的内存空间进行回收。内存回收主要分为两类,一类是 key 过期,一类是内存使用达到上限(max_memory)触发内存淘汰。过期策略要实现 key 过期,我们有几种思路。定时过期(主动淘汰)每个设置过期时间的 key 都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的 CPU 资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期(被动淘汰)只有当访问一个 k原创 2020-08-29 11:32:59 · 289 阅读 · 0 评论 -
【承】Redis 原理篇——关于 Redis 中的事务
Redis 事务先看官网https://redis.io/topics/transactions/http://redisdoc.com/topic/transaction.html为什么要用事务我们知道 Redis 的单个命令是原子性的(比如 get set mget mset),如果涉及到多个命令的时候,需要把多个命令作为一个不可分割的处理序列,就需要用到事务。例如我们之前说的用 setnx实现分布式锁,我们先 set,然后设置对 key 设置 expire,防止 del 发生异常的时候锁不原创 2020-08-24 21:32:10 · 259 阅读 · 0 评论 -
【承】Redis 原理篇——Redis 发布/订阅模式
前言关于 Redis 的“起承转合”,我前面已经用五个篇章的长度作了一个 Redis 基础篇——“起”篇的详细阐述,相信大家无论之前有没有接触过 Redis,都能从中学到不少东西。基础篇的内容顾名思义,只是个基础,主要说了 Redis 的发展以及 Redis 的基本数据类型,内容跟平时使用关联会比较大,难度不算大,希望大家能好好消化。这里送上基础篇的飞机票:【起】Redis 概述篇——带你走过 Redis 的前世今生【起】Redis 基础篇——基本数据结构之String,Hash【起】Redis原创 2020-08-19 16:23:12 · 371 阅读 · 0 评论 -
【起】Redis 基础篇——基本数据结构之总结篇
前言距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我原创 2020-08-07 09:26:18 · 288 阅读 · 0 评论 -
【起】Redis 基础篇——基本数据结构之 ZSet,Bitmap…
ZSet 有序集合存储类型sorted set,有序的 set,每个元素有个 score。 score 相同时,按照 key 的 ASCII 码排序。数据结构对比:数据结构是否允许重复元素是否有序有序实现方式列表 list是是索引下标集合 set否否无有序集合 zset否是分值 score操作命令添加元素zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python获取全部元素zrange m原创 2020-08-04 09:29:12 · 554 阅读 · 0 评论 -
【起】Redis 基础篇——基本数据结构之 List,Set
List 列表存储类型存储有序的字符串(从左到右),元素可以重复。可以充当队列和栈的角色。操作命令元素增减:lpush queue alpush queue b crpush queue d elpop queuerpop queueblpop queuebrpop queue取值lindex queue 0lrange queue 0 -1存储(实现)原理在早期的版本中,数据量较小时用 ziplist 存储,达到临界值时转换为 linkedlist 进行存储,分别对原创 2020-07-31 10:08:14 · 438 阅读 · 0 评论 -
【起】Redis 基础篇——基本数据结构之String,Hash
前言距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我原创 2020-07-27 15:03:30 · 477 阅读 · 0 评论 -
【起】Redis 概述篇——带你走过 Redis 的前世今生
距离过年那会闲在家更新的 MySQL 系列已经过去一段时间了,这段时间一直在忙其他的,所以博客的更新也就搁置了,但是一直在想着要更新啥内容比较好,刚好朋友给了我一本 Redis 的书籍,我就打算看完结合官方的文档总结一下,分享给大家,如果有什么不对的地方请指正。Redis 系列,我想以“起承转合”的形式来更新,不过不一定是四篇噢,因为篇幅有限,太长怕你们没有耐心看完,可能《起》篇就分为几篇博文来叙述了,我也会对其进行规整,方便大家看完能更好的吸收,毕竟写文章的我能得到各位观看我的文章,是我的荣幸,我必须原创 2020-07-23 10:24:33 · 616 阅读 · 0 评论