
------【Redis】
文章平均质量分 66
Mr小林
软件工程师的成才之路。
展开
-
springboot集成redission哨兵模式
代码】springboot集成redission哨兵模式。原创 2022-07-28 17:41:07 · 1633 阅读 · 0 评论 -
阿里二面:Redis 内存碎片是怎么产生的?
什么是内存碎片?你可以将内存碎片简单地理解为那些不可用的空闲内存。举个例子:操作系统为你分配了 32 字节的连续内存空间,而你存储数据实际只需要使用 24 字节内存空间,那这多余出来的 8 字节内存空间如果后续没办法再被分配存储其他数据的话,就可以被称为内存碎片。内存碎片Redis 内存碎片虽然不会影响 Redis 性能,但是会增加内存消耗。为什么会有 Redis 内存碎片?Redis 内存碎片产生比较常见的 2 个原因:1、Redis 存储存储数据的时候向操作系统申请的内存转载 2022-03-16 15:06:37 · 441 阅读 · 0 评论 -
Redis详解(二)------ redis的五大数据类型实现原理
目录1、对象的类型与编码2、字符串对象3、列表对象4、哈希对象5、集合对象6、有序集合对象7、五大数据类型的应用场景8、内存回收和内存共享9、对象的空转时长前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构。在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可..转载 2021-12-01 16:47:43 · 191 阅读 · 0 评论 -
Redis详解(一)------ redis的底层数据结构
目录1、演示数据类型的实现2、简单动态字符串3、链表4、字典5、跳跃表6、整数集合7、压缩列表8、总结 上一篇博客我们介绍了redis的五大数据类型详细用法,但是在 Redis 中,这几种数据类型底层是由什么数据结构构造的呢?本篇博客我们就来详细介绍Redis中五大数据类型的底层实现。回到顶部1、演示数据类型的实现 上篇博客我们在介绍 key 相关命令的时候,介绍了如下命令:OBJECT ENCODING key 该命令是用.转载 2021-12-01 16:17:05 · 407 阅读 · 0 评论 -
redis cluster 集群配置
<!-- 使用Redis作为缓存数据服务redis 集群模式--> <bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:password="Aicc@123"> <constructor-arg index="0"> <bean cl.原创 2021-05-25 17:58:05 · 335 阅读 · 0 评论 -
Creating Server TCP listening socket *:6379: bind: No error Redis闪退
在Windows下启动redis报错:Creating Server TCP listening socket *:6379: bind: No error如图所示:解决方案:直接在命令行中输入:redis-cli.exe如下图所示:然后再输入:shutdown意思就是关闭的意思,如下图所示;然后再输入:exit意思就是退出的意思,如下图所示;然后重新输入启动命令:redis-server.exe redis.windows.con...原创 2021-04-27 10:26:13 · 353 阅读 · 0 评论 -
Redis:从应用到底层,都在这儿了!(小林重点)
总感觉哪里不对,但是又说不上来。基本类型及底层实现1.1、String用途:适用于简单 key-value 存储、setnx key value 实现分布式锁、计数器(原子性)、分布式全局唯一 ID。底层:C 语言中 String 用char[]数组表示,源码中用 SDS(simple dynamic string) 封装 char[],这是是 Redis 存储的最小单元,一个 SDS 最大可以存储512M 信息。struct sds...转载 2020-12-23 15:58:16 · 394 阅读 · 0 评论 -
Redis 持久化之RDB和AOF
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识持久化。RDB 详解RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.转载 2020-12-16 13:39:32 · 177 阅读 · 0 评论 -
【Redis 】Redis HyperLogLog 语法和使用场景
Redis HyperLogLogRedis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 Hype...原创 2020-12-15 11:27:30 · 276 阅读 · 0 评论 -
【Redis】Redis GEO 用法和应用场景
目录Redis GEO应用场景:用法:geoaddgeoposgeodistgeoradius、georadiusbymembergeohashRedis GEO应用场景:自如、蛋壳、链家、还有美团都有根据距离找房源或者商铺的功能,我感觉这种功能完全就可以通过Redis GEO 完美实现。首先上传房源和店铺的时候,通过高德地图可以获取到目标物的经纬度,然后上传到Redis中。查询的时候根据自身所在位置的经纬度,然后加上范围,就能查询到附近的房源和店铺列表名称和经纬度,原创 2020-12-15 11:07:41 · 2589 阅读 · 0 评论 -
Redis——由分布式锁造成的重大事故
“基于 Redis 使用分布式锁在当今已经不是什么新鲜事了。本篇文章主要是基于我们实际项目中因为 Redis 分布式锁造成的事故分析及解决方案。图片来自 Pexels背景我们项目中的抢购订单采用的是分布式锁来解决的。有一次,运营做了一个飞天茅台的抢购活动,库存 100 瓶,但是却超卖了!要知道,这个地球上飞天茅台的稀缺性啊!!!事故定为 P0 级重大事故...只能坦然接受。整个项目组被扣绩效了~~事故发生后,CTO 指名点姓让我带头冲锋来处理,好吧,冲~事故现场经过一转载 2020-12-14 18:01:14 · 122 阅读 · 0 评论 -
springboot + redis + 注解 + 拦截器 实现接口幂等性校验
一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次 等等二、常见解决方案唯一索引 -- 防止新增脏数据 token机制 -- 防止页面重复提交 悲观锁 -- 获取数据的时候加锁(锁表或锁行) 乐观锁 -- 基于版本号version实现, 在更新转载 2020-09-17 11:33:16 · 124 阅读 · 0 评论 -
还在跟面试官纠缠redis分布式锁的问题?此图让你吊打面试官
转载 2020-08-03 16:40:11 · 167 阅读 · 0 评论 -
Redisson实现分布式锁原理及代码实战
Redission分布式锁原理视频地址:https://www.bilibili.com/video/BV15K411j7rM?from=search&seid=14544758179278228735实现Redis的分布式锁,除了自己基于redis client原生api来实现之外,还可以使用开源框架:RedissionRedisson是一个企业级的开源Redis Client,也提供了分布式锁的支持。我也非常推荐大家使用,为什么呢?回想一下上面说的,如果自己写代码来通过redis转载 2020-08-03 16:18:16 · 1307 阅读 · 0 评论 -
记一次由Redis分布式锁造成的重大事故,避免以后踩坑!
前言基于Redis使用分布式锁在当今已经不是什么新鲜事了。本篇文章主要是基于我们实际项目中因为redis分布式锁造成的事故分析及解决方案。背景:我们项目中的抢购订单采用的是分布式锁来解决的。有一次,运营做了一个飞天茅台的抢购活动,库存100瓶,但是却超卖了!要知道,这个地球上飞天茅台的稀缺性啊!!!事故定为P0级重大事故...只能坦然接受。整个项目组被扣绩效了~~事故发生后,CTO指名点姓让我带头冲锋来处理,好吧,冲~事故现场经过一番了解后,得知这个抢购活动接口以前从来没有出现过这种情况,但是这转载 2020-08-03 09:28:52 · 192 阅读 · 0 评论 -
Redis 6.0 新特性-多线程连环 13 问!
Redis 6.0 来了在全国一片祥和IT民工欢度五一节假日的时候,Redis 6.0不声不响地于5 月 2 日正式发布了,吓得我赶紧从床上爬起来,学无止境!学无止境!对于6.0版本,Redis之父Antirez在RC1版本发布时(2019-12-19)在他的博客上连续用了几个“EST”词语来评价:the most “enterprise” Redis version to date // 最”企业级”的the largest release of Redis ever as far as I转载 2020-06-02 09:29:50 · 540 阅读 · 0 评论 -
Spring Boot 监听 Redis Key 失效事件实现定时任务
业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。方式可能有很多,在这里介绍一种监听 Redis 键值对过期时间来实现订单自动关闭。实现思路在生成订单时,向 Redis 中增加一个 KV 键值对,K 为订单号,保证通过 K 能定位到数据库中的某个订单即可,V 可为任意值。转载 2020-05-21 10:53:38 · 927 阅读 · 0 评论 -
Redisson基本用法
1. RedissonRedisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,此处我们只用它的分布式锁功能。https://github.com/redisson/redisson1.1. 基本用法 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> ...转载 2020-05-12 13:41:52 · 22744 阅读 · 0 评论 -
Redis-- key最大是多少 ,单个实例最多支持多少个key
Redis:一个key或是value大小最大是512Mredis单个实例最多能存多少个key键,每个值能存储多少个元素?解决方法:What is the maximum number of keys a single Redis instance can hold? and what is the max number of elements in a Hash, ...原创 2020-05-06 16:47:32 · 22032 阅读 · 3 评论 -
Redis的集合、压缩列表
前言专题4中介绍了有序集合的底层实现---跳跃表,这一个专题中,学习下集合键的底层实现之一整数集合:当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。比如如下命令redis> sadd num 1,2,3,4,6(integer)5 1. 整数集合的实现整数集合是Redis用来保存整数值的集合抽象数据结构,它...转载 2020-03-31 23:47:16 · 353 阅读 · 0 评论 -
面试:原来Redis常用的五种数据类型底层结构是这样的
关注我,可以获取最新知识、经典面试题以及微服务技术分享 在Redis中会涉及很多数据结构,比如SDS,双向链表、字典、压缩列表、整数集合等等。Redis会基于这些数据结构自定义一个对象系统,而且自定义的对象系统有很多好处。通过对以下的Redis对象系统的学习,可以了解Redis设计原理以及初衷,为了我们在使用Redis的时候,更加能够理解到其原理和定位问题。Redis 对象Red...转载 2020-03-31 23:36:13 · 190 阅读 · 0 评论 -
接口限流算法及Redis:漏桶算法&令牌桶算法
工作中对外提供的API 接口设计都要考虑限流,如果不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃,如何应对这种情况呢,我们可以对请求进行引流或者直接拒绝等操作,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存:缓存的目的是提升系统访问速度和增大系统处理容量降级:降级是当服务器压力剧...转载 2020-03-23 20:38:00 · 5258 阅读 · 0 评论 -
Java版本布隆过滤器
布隆过滤器 布隆过滤器主要用于判断一个元素是否在一个集合中,它可以使用一个位数组简洁的表示一个数组。它的空间效率和查询时间远远超过一般的算法,但是它存在一定的误判的概率,适用于容忍误判的场景。如果布隆过滤器判断元素存在于一个集合中,那么大概率是存在在集合中,如果它判断元素不存在一个集合中,那么一定不存在于集合中。常常被用于大数据去重。算法思想 布隆过滤器算法主要思想就是利用k...转载 2020-03-18 16:58:59 · 179 阅读 · 0 评论 -
聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)
redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的。B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试)还有个几个姊妹篇:介绍mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试)参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)参考:二分查找法:各...转载 2020-03-08 21:29:45 · 659 阅读 · 0 评论 -
redis集群简介哨兵模式
1.1 集群的概念所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。1.1.1 使用redis集群的必要性问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?答:(1)单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。 (2...转载 2020-03-08 17:02:11 · 334 阅读 · 0 评论 -
Redis-cluster集群
哨兵模式的缺陷在哨兵模式中,仍然只有一个Master节点。当并发写请求较大时,哨兵模式并不能缓解写压力。我们知道只有主节点才具有写能力,那如果在一个集群中,能够配置多个主节点,是不是就可以缓解写压力了呢?答:是的。这个就是redis-cluster集群模式。Redis-cluster集群概念(1)由多个Redis服务器组成的分布式网络服务集群;(2)集群之中有多个Ma...转载 2020-03-08 16:59:35 · 348 阅读 · 0 评论 -
Redis相关问题
有请下一位应聘者。面试官:你好!废话我就不给你多说了,我们要招的这个岗位要求精通Redis,你要是不行,就直接拎包走人,别浪费彼此时间。应聘者:明人不说暗话,我最近3个月朝夕苦背Redis面试题及答案 ,实操可能不行,但面试问答,无人能及!面试官:苦背答案有用?在下面试向来是理论结合应用场景,答得出来实战,你才NB!放个大招!“目前公司有10万员工,分成500个部门,公司为员工制定...转载 2019-12-16 10:37:58 · 143 阅读 · 0 评论 -
Redis 内存满了怎么办?
Redis占用内存大小我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小//设置Redis最大占用内存大小为100Mmaxmemory100mbredis的配...转载 2019-12-12 10:39:08 · 130 阅读 · 0 评论 -
拼多多面试:如何用 Redis 统计独立用户访问量?
众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢?使用...转载 2019-11-07 10:13:34 · 138 阅读 · 0 评论 -
Redis之我见
【定义】Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有:字符串类型、散列类型、列表类型、集合类型、有序集合类型。由于0%的用户请求都集中在20%的热门数据上,所以我们要将这20%的数据放在缓存里。redis可原创 2016-09-16 22:39:17 · 458 阅读 · 4 评论 -
MongoDB和Redis的区别
简介MongoDB更类似MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。内存管理机制Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。MongoDB数据存在内存,由Linux系统mmap转载 2017-02-27 15:42:44 · 377 阅读 · 1 评论