redis
文章平均质量分 88
hellozhxy
这个作者很懒,什么都没留下…
展开
-
Go语言操作Redis
在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。Redis介绍Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。Redis支持的数据结构Redis支持诸如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、转载 2022-02-23 15:11:26 · 1744 阅读 · 0 评论 -
Redis cluster集群模式的原理
redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内置的高可用支持,部分master不可用时,还是可以继续工作的 支撑N个redis master node,每个master node都可以挂载多个slave node 高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就转载 2021-10-19 21:59:31 · 206 阅读 · 0 评论 -
Redis cluster集群扩容缩容原理
1. Redis Cluster集群扩容1.1 扩容原理redis cluster可以实现对节点的灵活上下线控制 3个主节点分别维护自己负责的槽和对应的数据,如果希望加入一个节点实现扩容,就需要把一部分槽和数据迁移和新节点每个master把一部分槽和数据迁移到新的节点node041.2 扩容过程准备新节点 准备两个配置文件redis_6379.conf和redis_6380.conf daemonize yes port 6379转载 2021-10-19 21:51:42 · 1538 阅读 · 0 评论 -
Redis Cluster 集群模式原理和动态扩容
Redis Cluster原理详细参考 Redis cluster集群模式的原理, 在这里补充下要点16384个slot, 平均分布在各个master, key-value 对存储在slot中; 因此达到分片存储的效果; key的hash值对16384取模后, 映射到slotredis cluster默认是不支持slave节点读或者写的, 这和哨兵模式有区别基于slot的请求重定向: 客户端可能会挑选任意一个redis实例去发送命令,每个redis实例接收到命令,都会计算key对应的hash sl转载 2021-10-19 21:32:21 · 845 阅读 · 0 评论 -
Redis 新特性篇:100% 掌握多线程模型
Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注。提供了啥特性呀?知道了我能加薪么?主要特性如下: 多线程处理网络 IO; 客户端缓存; 细粒度权限控制(ACL); RESP3协议的使用; 用于复制的 RDB 文件不在有用,将立刻被删除; RDB 文件加载速度更快; 其中备受关注的就是「多线程模型 + 客户端缓存」,我们只有掌握了新特性原理,才能判断什么时候使用 6.0 版本,如何...原创 2021-10-09 09:36:54 · 85 阅读 · 0 评论 -
Redis热点Key发现及常见解决方案
一、热点Key问题产生的原因1、用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场景也会产生热点问题。2、请求分片集中,超过单 Server 的性能极限。在服务端读数据进行访问时,往往会对数据进行分片切分,此过程中会转载 2021-08-18 11:13:17 · 1212 阅读 · 0 评论 -
Redis 热 Key 发现以及解决办法
背景介绍最近在技术交流微信群里看大家讨论技术,其中有谈到Redis热Key的一些问题解决方案,我也仔细思考了一下我们目前系统中Redis的使用场景,我们是不是也存在热Key问题,或者说如果我们也出现了热Key问题会怎么去解决。目前我在京东做一款APP(京东读书)的业务量不是特别大,说一个指标就可以了,DAU在20W左右,熟悉这个指标的朋友马上就可以感受什么叫量不是特别大了。所以我的工作中遇到热Key的问题可能印象中没有过,如果硬要说出现过,也算是有过,不过那种情况不...转载 2021-08-18 09:49:59 · 2814 阅读 · 0 评论 -
图解 Redis 五种数据结构底层实现
Redis 是一个基于内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件。Redis 支持五种常见对象类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Zset),我们在日常工作中也会经常使用它们。知其然,更要知其所以然,本文将会带你读懂这五种常见对象类型的底层数据结构。本文主要内容参考自《Redis设计与实现》1. 对象类型和编码Redis 使用对象来存储键和值的,在Redis中,每个对象都由 redisObject 结构表示。redisOb转载 2021-08-17 16:42:56 · 359 阅读 · 0 评论 -
Redis cluster集群模式的原理
redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内置的高可用支持,部分master不可用时,还是可以继续工作的 支撑N个redis master node,每个master node都可以挂载多个slave node 高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就转载 2021-08-15 16:49:45 · 123 阅读 · 0 评论 -
Redis cluster原理
前言上文我们聊了基于Sentinel的Redis高可用架构,了解了Redis基于读写分离的主从架构,同时也知道当Redis的master发生故障之后,Sentinel集群是如何执行failover的,以及其执行failover的原理是什么。这里大概再提一下,Sentinel集群会对Redis的主从架构中的Redis实例进行监控,一旦发现了master节点宕机了,就会选举出一个Sentinel节点来执行故障转移,从原来的slave节点中选举出一个,将其提升为master节点,然后让其他的节点去复制新选举转载 2021-08-15 11:13:47 · 92 阅读 · 0 评论 -
Redis的架构模式
单机版特点:简单问题:1、内存容量有限 2、处理能力有限 3、无法高可用。主从复制Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。特点:1、转载 2021-08-12 17:16:37 · 786 阅读 · 0 评论 -
Redis--COW(Copy On Write)
摘要问题概述:1、RDB的过程中是否会停止对外提供服务?2、RDB的过程中数据修改了,备份的是修改前的还是修改后的?3、RDB时是不是先把内容中的所有KV复制一份,保证数据不会被修改?问题解决:使用Copy On Write写时复制详细在看Redis持久化方式中的RDB方式时,想到了几个问题:1、 Redis是单线程的,那在RDB的过程中,是不是就没法对外提供服务了?Redis操作快的一个重要原因是Redis的数据是在内存中存储和操作的,持久化本身是磁盘的IO操作,IO操作又是.转载 2021-08-12 11:01:41 · 702 阅读 · 0 评论 -
Redis 多线程网络模型全面揭秘
导言在目前的技术选型中,Redis 俨然已经成为了系统高性能缓存方案的事实标准,因此现在 Redis 也成为了后端开发的基本技能树之一,Redis 的底层原理也顺理成章地成为了必须学习的知识。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说,网络模型是它的精华,搞懂了一个网络服务器的网络模型,你也就搞懂了它的本质。本文通过层层递进的方式,介绍了 Redis 网络模型的版本变更历程,剖析了其从单线程进化到多线程的工作原理,此外,还一并分析并解答了 Redis 的网络模型的很多抉择转载 2021-02-23 18:03:48 · 310 阅读 · 0 评论 -
Redis 6.0 如何实现大幅度的性能提升?
导读: Redis可以轻松支撑100k+ QPS,离不开基于Reactor模型的I/O Multiplexing,In-memory操作,以及单线程执行命令避免竞态消耗。尽管性能已经能满足大多数应用场景,但是如何继续在迭代中继续优化,以及在多核时代利用上多线程的优势,也是大家关注的重点。我们知道性能优化在系统资源层面可以从I/O以及CPU上入手,对于Redis而言,其功能不过度依赖CPU计算能力,即不是CPU密集型的应用,而In-memory的操作也绕开了通常会拖慢性能的磁盘I/O,所以在Redis 6..转载 2020-10-10 09:07:25 · 1045 阅读 · 0 评论 -
五大实例详解,携程 Redis 跨机房双向同步实践
前言在《携程 Redis 跨 IDC 多向同步实践》一文曾和大家分享过携程在 Redis 双向同步方面的心得,简单介绍了实现一个 Redis 双向同步系统中可能面临的问题,以及其中一种问题(分布式一致性)的部分处理方案 -- CRDT(Conflict-free ReplicatedData Types)。本文将进一步阐述在具体设计和落地过程中的一些细节, 希望对大家能够有所帮助。包括:Cycle Break -- 如何打破盗梦空间的无限循环 Last Write Wins & Vecto转载 2020-07-27 15:03:44 · 1508 阅读 · 0 评论 -
Redis开发规范
本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明。键值设计 命令使用 客户端使用 相关工具通过本文的介绍可以减少使用Redis过程带来的问题。一、键值设计1、key名设计可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idugc:video:1简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid.原创 2020-07-27 14:57:45 · 119 阅读 · 0 评论 -
Redis事务
前几天有读者说自己面试被问到Redis的事务,虽然不常用,但是面试竟然被问到,平时自己没有注意Redis的事务这一块,面试的时候被问到非常不好受。虽然,这位读者面试最后算是过了,但是薪资方面没有拿到自己理想的薪资。其实这个也是正常的,一般面试被问到烂大街的,谁还问你啊,专门挑一些不常见的来问你,就是为了压你的薪资。所以在这里写一篇文章对Redis的事务进行详细的讲解,估计对Redis事务从理解到原理深入这一篇就够了。以后面试都不用担心了再被问道Redis的事务了,这一篇主要讲解Redis事务转载 2020-07-06 11:29:49 · 117 阅读 · 0 评论 -
Redis面试题
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用...转载 2020-04-07 15:41:12 · 900 阅读 · 0 评论 -
Redis中对ZSet类型的操作命令
写在前面的话:读书破万卷,编码如有神----------------------------------------------------------------------------------------------------------------------------------------1、zadd :添加元素,格式是:zadd zset的key scor...转载 2020-03-04 20:41:10 · 1497 阅读 · 0 评论 -
大型web系统数据缓存设计
在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型、常见缓存系统的特点和数据指标、缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速、系统的了解相关知识。 数据库的瓶颈 1 数据量 关系型数据库的数据量是比较小的,以我们常用的MySQL为例,...转载 2018-05-11 13:39:19 · 234 阅读 · 0 评论 -
缓存设计
1.前言&基本介绍 在原始的系统架构中,我们都由程序直接连接DB,随着业务的进一步开展,DB的压力越来越大,为了缓解DB的这一压力,我们引入了缓存,在程序连接DB中加入缓存层,从而减轻数据库压力,而且缓存一般存在于内存中,相比于存在硬盘中的DB在读取速度上绝对是比DB高几个等级。下面我们来简单聊聊关于缓存几个东西 2.缓存的优缺点 缓存的优点就是“快”,一个快字基本能概括了。...转载 2018-05-11 13:40:21 · 116 阅读 · 0 评论 -
redis面试问题(一)
链接:https://www.nowcoder.com/discuss/92610来源:牛客网最近在学习redis,根据网上的面经整理了两篇常见的问题。本人水平有限,还请各位牛友大佬多多指教!基础知识必备:五大常用数据类型redis与其他缓存的比较rdb和aof=================================常见问题:1、为什么使用redis...转载 2018-08-22 13:41:12 · 231 阅读 · 0 评论 -
redis面试问题(二)
上一篇:https://www.nowcoder.com/discuss/926101.redis和其他缓存相比有哪些优点呢见上一篇2. 你刚刚提到了持久化,能重点介绍一下么见上一篇3.Redis中对于IO的控制做过什么优化?pipeline?4 有没有尝试进行多机redis 的部署?如何保证数据一致的?主从复制,读写分离1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数...转载 2018-08-22 13:42:57 · 216 阅读 · 0 评论 -
读完这篇文章,就基本搞定了Redis数据库
另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。除此之外,Redis 支持事务 、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。本文将从以下几个方面全面解读 Redis:为什么要用 Redis / 为什么要用缓存 为什么要用 Redis 而不用 map/guava 做缓存 Redis 和 Memcached 的区别 Redis ...转载 2018-10-12 16:01:10 · 551 阅读 · 0 评论 -
redis Hash槽
集群:是一个提供多个Redis(分布式)节点间共享数据的程序集。集群部署Redis 集群的键空间被分割为 16384 hash个槽(slot), 集群的最大节点数量也是 16384 个关系:cluster>node>slot>key分片:Redis Cluster在设计中没有使用一致性哈希(Consistency Hashing),而是使用数据分片引入哈希槽(h...转载 2019-02-21 17:31:27 · 4955 阅读 · 0 评论 -
Redis 哈希槽
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。Redis 集群没有使用一致性hash, 而...转载 2019-02-25 17:02:14 · 425 阅读 · 0 评论 -
Redis架构及分片管理
Redis 集群的 TCP 端口(Redis Cluster TCP ports) 每个 Redis 集群节点需要两个 TCP 连接打开。正常的 TCP 端口用来服务客户端,例如 6379,加 10000 的端口用作数据端口,在上面的例子中就是 16379。 第二个大一些的端口用于集群总线(bus),也就是使用二进制协议的点到点通信通道。集群总线被节点用 于错误检测,配置更新,故障转移授权...转载 2019-02-26 15:50:12 · 331 阅读 · 0 评论 -
Redis 总结精讲
本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题 正文 1、为什么使用redis 分析:博主觉得...转载 2019-02-26 17:38:58 · 161 阅读 · 0 评论 -
redis 双写一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1...转载 2019-02-26 18:55:52 · 155 阅读 · 0 评论 -
redis 延时任务
引言在开发中,往往会遇到一些关于延时任务的需求。例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在哪里呢?一共有如下几点区别定时任务有明确的触发时间,延时任务没有定时任务有执行周期,而延时任务在某事件触发后一段时间内执行,没有执行周期...转载 2019-02-26 19:12:56 · 143 阅读 · 0 评论 -
redis 缓存击穿
什么是缓存击穿在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿。场景如下图所示:我们正常人在登录首页的时候,都是根据userID来命中数据,然而黑客的目的是破坏你的系统,黑客可以随机生成一堆userID...转载 2019-02-26 19:13:48 · 150 阅读 · 0 评论 -
缓存穿透、缓存雪崩、redis并发
把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数据量很大的时候,经典的几个问题如下:(一)缓存和数据库间数据一致性问题分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存。我们只能采取合适的策略来降低缓存和数据库间数据不一致的概率,而无法保证两者...转载 2019-02-26 19:31:02 · 141 阅读 · 0 评论 -
缓存穿透,瞬间并发,缓存雪崩的解决方法
一.缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。 解决办法: 1.布隆过滤 对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bit...转载 2019-02-26 19:32:03 · 410 阅读 · 0 评论 -
Redis高可用原理
Redis 是被广泛使用的基础软件之一,对于架构师和运维人员来说,了解 Redis 的高可用方案和背后的原理,是必备的基础知识。本文作者深入分析了 Redis 高可用的方方面面,并且做了有效总结,相信对广大读者可以起到很好的领路作用。Redis 中为了实现高可用采用了如下两个方式:主从复制数据。 采用哨兵监控数据节点的运行情况,一旦主节点出现问题由从节点顶上继续进行服务。...转载 2019-06-10 17:27:19 · 246 阅读 · 0 评论 -
redis之 zadd、zremrangebyscore、zremrangebyrank、zscore、zcard、zcount、zrangebyscore、zinczrevrankzrevrange
1.zadd向名称为 key 的 zset 中添加元素 member, score 用于排序。如果该元素已经存在,则根据score 更新该元素的顺序redis 127.0.0.1:6379> zadd myzset 1 "one"(integer) 1redis 127.0.0.1:6379> zadd myzset 2 "two"(integer) 1redis 127.0.0.1:...转载 2018-04-25 13:01:14 · 2767 阅读 · 0 评论