
中间件-Redis
文章平均质量分 89
Redis原理及实践
Shi Peng
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis的部署模式
前言今天开会讲到我们使用的是Redis的Cluster模式,发现对redis的部署模式还不是非常清晰。Redis有很多种部署模式,如:master/slave(主从)模式、sentinel(哨兵)模式、cluster(集群)模式等,这里一一搞清楚。1、单节点模式主要用于平时自己试玩,如写个小demo。2、master/slave模式向master节点写入数据,然后同步到slave节点。一个master可以有多个slave,但一个slave只能有一个master。2.1、主从模式的作用:通过原创 2020-05-14 19:56:21 · 2153 阅读 · 0 评论 -
VKRedis学习笔记
一、VKRedis都做了什么1、全公司redis集群的监控和管理:客户端监控:客户端投递埋点信息到普罗米修斯服务端监控:通过抓取服务端核心指标,实时监控redis服务器运行情况告警:客户端和服务端的监控,会通过vkalert告警重点监控指标有:客户端慢查,大key,热key,异常信息上报服务端 info slowlog clusterInfo等信息抓取2、对redis平台进行数...原创 2020-03-15 12:38:52 · 907 阅读 · 1 评论 -
redis学习笔记
一、Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。二、为什么r...原创 2019-03-02 23:28:22 · 242 阅读 · 0 评论 -
Redis 6.0为什么引入多线程
一、前言Redis 6.0首次引入了多线程。看下官方发布的新版和旧版的性能对比:1)get的性能对比:2)set的性能对比:可以看出,无论读还是写,多线程性能都远好于单线程,几乎翻倍了。上图仅是简单验证,仅作为参考,不能作为线上生成环境的指标。二、Redis多线程2.1、Redis 6.0之前的版本真的是单线程吗?Redis是基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。他的组成分4部分:多个socketIO 多路复用文件事件分派器事件处理器正原创 2021-05-27 16:52:12 · 1844 阅读 · 0 评论 -
Redis深度历险 学习笔记
一、Redis基本数据结构类型1、string实现方式是数组,类似于java的ArrayList。单个字符串足底啊512M,字符串需要扩容时:小于1M扩容一倍;大于1M,最多只扩容1M。使用场景:1)键值对:set,get127.0.0.1:6379> set aa 11OK127.0.0.1:6379> get aa"11"2)批量键值对:mset, mget127.0.0.1:6379> get aa"11"127.0.0.1:6379> set bb原创 2021-03-03 16:39:12 · 629 阅读 · 1 评论 -
Redis实战学习笔记
一、redis简介redis是个远程内存数据库。redis通过复制、持久化、客户端分片,可方便地将redis扩展词一个能保护数百万GB数据,每秒处理上百万次请求的系统。redis是一个高性能的非关系型数据库,他可以存储key和5类不同类型的value之间的映射,可以将存储在内存的key/value对,持久化到磁盘,然后用复制来扩展读性能;也可以使用客户端分片来扩展写性能。1.1、redis与memcached对比redis与memcached性能相差无几,但redis可自动以两种不同的方式将数据写原创 2020-05-09 19:56:28 · 301 阅读 · 0 评论 -
Redis的常用知识点
一、Redis的持久化redis与memcached相比,不同在于redis可支持持久化,且数据结构丰富:string, list, set, zset, hash等多种数据结构。1.1、前言Redis的所有数据都存储到内存中,然后不定期的以异步的方式存储到磁盘上(也称为半持久化模式),也可以把每一次数据变化都写入到一个aof(append only file)文件中(称为全持久化模式)。由于redis中的数据都存在内存中,如果没有配置持久化,redis重启后数据就全丢了。于是需要开启redis的持原创 2020-05-30 17:10:49 · 363 阅读 · 0 评论 -
Jedis主要知识点学习笔记
一、Jedis介绍Jedis是Redis官方推荐的Java连接开发工具。原创 2020-05-30 22:37:17 · 456 阅读 · 0 评论 -
小米Redis容器化学习笔记
一、背景1.1、现状Redis有数万个实例,每天百万亿次Redis访问,支撑了几乎所有的产品线和生态链。1.2、问题Redis部署在物理机上,不同业务间没有做资源隔离:1、当 机器宕机 或 网络抖动,导致Redis节点下线,需要人工介入运维处理,运维成本高。2、没有做CPU资源隔离,当slave节点打RDB或流量激增导致节点QPS高,会造成节点CPU使用率增加,导致无法预测的延迟增加,影响其他业务。3、Redis分片采用Redis Cluster协议,集群自主分片。问题:应用开发人员需要一定程原创 2020-08-13 17:56:50 · 816 阅读 · 0 评论 -
Redis Cluster Smart Client 学习笔记
Redis Cluster是Redis官方的集群实现方案,为使用proxy来代理客户端连接Redis集群节点,而是采用smart client直连Redis集群。Redis Cluster是无中心节点设计,client可以连接集群中的任何一个节点。smart client的机制:在client初次连接Redis集群后,smart client会获取集群的节点信息及slot的分布信息,并在本地缓存一份 hash slot 与 node 关系的路由表。当client收到请求时,先本地用CRC16算法计原创 2020-08-26 18:18:16 · 1644 阅读 · 0 评论 -
Redis Cluster slots 迁移过程
一、Redis Cluster 背景知识Redis Cluster是无中心化的架构,他没有集中化的控制组件和proxy,客户端可以向集群中的任意一台节点发送请求,然后根据节点的返回值做重定向(MOVE或ASK)操作,客户端本地也会缓存slot表,并根据每次的重定向信息来更新这个表。由于没有中心化组件存储,因此redis cluster使用gossip在集群间同步路由表和集群拓扑信息,在经过一段时间后,理想情况下及群众给每个节点都掌握了整个集群的路由信息二、slot迁移过程将一个Redis节点上指定原创 2020-08-27 11:48:30 · 6872 阅读 · 1 评论 -
Redis Cluster路由请求原理详解
https://cloud.tencent.com/developer/article/1605813Redis Cluster的客户端采用直连Redis的方式。一、MOVED重定向Redis Cluster发送redis指令时,先根据key计算出对应的slot,在根据slot从客户端的slot与node的映射表中找到对应的node,然后发送redis指令:如果指令在这个node上,则处理指令;如果不在这个node上,则redis会返回给客户端MOVED重定向错误,通知客户端重新请求正确的nod原创 2020-09-17 15:15:45 · 2534 阅读 · 0 评论 -
Redis性能优化的13条军规
一、前言Redis是基于单线程模型实现的,即Redis使用一个线程来处理所有客户端请求,尽管Redis使用了非阻塞式IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是O(1)),但由于Redis单线程执行的特点,他对性能的要求更近苛刻。二、Redis操作最佳实践我们通过以下手段来提升Redis的运行速度:1、缩短key/value的存储长度2、使用lazy free(延迟删除)特性3、设置key/value的过期时间4、禁用长耗时的查询命令5、使用slowlog优化耗时命令:怎样使原创 2020-09-30 12:26:04 · 658 阅读 · 0 评论 -
Redis五种数据结构的底层实现
一、前言Redis有五种基本数据结构:字符串、hash、set、zset、list。下面解释下载Redis 3.0.6版本中底层是怎样实现他们的。二、动态字符串SDSSDS是“simple dynamic string”的缩写。Redis中所有场景出现的字符串,基本都是有SDS来实现的:所有非数字的key, 如:set msg “hello” 中的key msg字符串数据类型的值,如:set msg “hello” 中的value “hello”非字符串数据类型中的“字符串值”,如:rpush原创 2020-09-30 18:36:38 · 1160 阅读 · 0 评论 -
Redis 6.0 多线程IO 学习笔记
一、异步处理IORedis的核心工作负荷是一个单线程在处理,但为什么还那么快?(10万qps)纯内存操作IO数据的处理是异步的,每个命令从接收到处理,再到返回,会经历多个“不连续”的工序。这里异步处理IO不是“同步/异步 的IO”,而是IO处理过程是异步的。假设客户端给redis发送了get aaa指令,redis要处理指令,redis必须完整地接收客户端的请求,并对指令解析,然后读取返回结果,再通过网络回写给客户端。这整个过程分以下几部分:接收指令:通过TCP接收到指令,可能会经历多次T原创 2020-10-09 21:16:36 · 386 阅读 · 0 评论 -
Redis bigkey学习笔记
一、什么是Redis bigkey下面两种情况,redis的key我们认为他是bigkey:字符串类型:在redis中一个字符串最大是512MB,所谓bigkey是指单个value很大,一般超过10KB就认为是bigkey非字符串类型:哈希、列表、集合、有序集合等集合类型,bigkey主要体现在元素个数太多二、bigkey的危害bigkey可以说是redis中的老鼠屎,具体表现在:2.1、内存空间不均匀有bigkey的redis节点占用内存多,而其他节点占用内存少,导致集群中不同redis原创 2020-10-09 16:56:14 · 1073 阅读 · 0 评论