Redis - 基础数据类型
简介 根据 官网文档 的解释,可以了解 Redis 基础数据类型的一些基本信息: 对于 Redis 来说,存储的 key 值都是字符串类型,讨论数据类型的时候,指的都是存储的 value 值。这里主要是包括 5 种数据类型:String、List、Set、Hash、SortedSet。 ...[2023/3/22]
ASP.NET Core使用filter和redis实现接口防重
背景 日常开发中,经常需要对一些响应不是很快的关键业务接口增加防重功能,即短时间内收到的多个相同的请求,只处理一个,其余不处理,避免产生脏数据。这和幂等性(idempotency)稍微有点区别,幂等性要求的是对重复请求有相同的效果和结果,通常需要在接口内部执行业务操作前检查状态;而防重可以认为是...[2023/3/17]
Redis使用ZSET实现消息队列使用总结二
转载请注明出处: 目录 1.redis 用zset做消息队列如何处理消息积压 2.redis分片并使用zset做消息队列 3. redis如何分片 4. redis使用java发送消息到zset队列并对消息进行分片处理 5. redis使用zset做消息队列时,...[2023/3/17]
【Redis场景5】集群秒杀优化-分布式锁
集群环境下的秒杀问题 前序 【Redis场景1】用户登录注册 【Redis场景2】缓存更新策略(双写一致) 【Redis场景3】缓存穿透、击穿问题 【Redis场景拓展】秒杀问题-全局唯一ID生成策略 【Redis场景4】单机环境下秒杀问题 在单机环境下的并发问题,我们可以使用相关锁...[2023/3/6]
深入理解跳表及其在Redis中的应用
前言 跳表可以达到和红黑树一样的时间复杂度 O(logN),且实现简单,Redis 中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代平衡树的一种数据结构。本篇文章将对跳表的实现及在Redis中的应用进行学习。** 一. 跳表的基础概念 跳表,即跳...[2023/2/24]
Spring中RedisTemplate的基本使用浅析
目录spring-data-redis项目使用步骤 spring-data-redis项目 spring-data-redis提供了在Spring应用中通过简单的配置访问redis服务,封装了 RedisTemplate 对象来对Redis进行各种操作、异常处理及序列化,...[2023/2/22]
用Redis实现延迟队列,我研究了两种方案,发现并不简单
大家好,我是三友~~ 背景 前段时间有个小项目需要使用延迟任务,谈到延迟任务,我脑子第一时间一闪而过的就是使用消息队列来做,比如RabbitMQ的死信队列又或者RocketMQ的延迟队列,但是奈何这是一个小项目,并没有引入MQ,我也不太想因为一个延迟任务就引入MQ,增加系统复杂度,所以这个方...[2023/2/15]
redis实现分布式锁(包含代码以及分析利弊)
redis实现分布式锁(基础版) 使用redis实现分布式锁的方法有多种,基础版本是基于setnx命令,即如果不存在则设置。这个命令可以保证只有一个客户端能够成功设置一个key,从而获得锁。设置key的时候需要设置一个过期时间,以防止死锁。释放锁的时候需要删除key,或者使用lua脚本来保证原子...[2023/2/13]
Redisson分布式闭锁RCountDownLatch的使用详细讲解
目录一、RCountDownLatch的使用二、trySetCount()设置计数器三、countDown()源码四、await()源码 本篇文章基于redi on-3.17.6版本源码进行分析 一、RCountDownLatch的使用 RCountDownLatch的功能跟CountDow...[2023/2/13]
Redisson分布式信号量RSemaphore的使用超详细讲解
目录一、RSemaphore的使用二、RSemaphore设置许可数量三、RSemaphore的加锁流程四、RSemaphore的解锁流程 本篇文章基于redi on-3.17.6版本源码进行分析 一、RSemaphore的使用 @Test public void testRSemapho...[2023/2/13]
Redisson RedLock红锁加锁实现过程及原理
目录一、主从redis架构中分布式锁存在的问题二、红锁算法原理三、红锁算法的使用四、红锁加锁流程五、RedLock算法问题六、总结 本篇文章基于redi on-3.17.6版本源码进行分析 一、主从redis架构中分布式锁存在的问题 1、线程A从主redis中请求一个分布式锁,获取锁成功; ...[2023/2/13]
Redisson可重入锁解锁逻辑详细讲解
目录主动释放自动释放 本篇文章基于redi on-3.17.6版本源码进行分析 相比较Redi on可重入锁的加锁逻辑,释放锁的逻辑就相对简单一些。释放锁分为主动释放和自动释放两种方式。 主动释放 我们查看org.redi on.Redi onLock#unlock()方法: pub...[2023/2/13]
Redis 异步客户端选型及落地实践
作者:京东科技 王晨 Redis异步客户端选型及落地实践 可视化服务编排系统是能够通过线上可视化拖拽、配置的方式完成对接口的编排,可在线完成服务的调试、测试,实现业务需求的交付,详细内容可参考:https: mp.weixin.qq.com 5oN9JqWN7n-4Zv6B9K8kWQ。 为了...[2023/2/10]
【Redis场景4】单机环境下秒杀问题
单机环境下的秒杀问题 全局唯一ID 为什么要使用全局唯一ID: 当用户抢购时,就会生成订单并保存到订单表中,而订单表如果使用数据库自增ID就存在一些问题: 受单表数据量的限制 id的规律性太明显 场景分析一:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信...[2023/2/8]
【Redis场景3】缓存穿透、击穿问题
场景问题及原因 缓存穿透: 原因:客户端请求的数据在缓存和数据库中不存在,这样缓存永远不会生效,请求全部打入数据库,造成数据库连接异常。 解决思路: 缓存空对象 对于不存在的数据也在Redis建立缓存,值为空,并设置一个较短的TTL时间 问题:实现简单,维护方便,但短期的数据不一致...[2023/2/1]
Redis - 介绍与使用场景
简介 Redis 的全称是 Remote Dictionary Server,是一个使用 C 语言编写的、开源的(BSD 许可)高性能非关系型(NoSQL)的键值对数据库。 Redis 的数据是存储在内存中的,所以读写速度非常快,被广泛应用于缓存方向,当然也有持久化数据库的用法。 优缺点 优点...[2023/2/1]
Redis缓存的主要异常及解决方案
作者:京东物流 陈昌浩 1 导读 Redis 是当前最流行的 NoSQL数据库。Redis主要用来做缓存使用,在提高数据查询效率、保护数据库等方面起到了关键性的作用,很大程度上提高系统的性能。当然在使用过程中,也会出现一些异常情景,导致Redis失去缓存作用。 2 异常类型 异常主要有 缓存...[2023/1/30]
Redis之key的淘汰策略
淘汰策略概述 redis作为缓存使用时,在添加新数据的同时自动清理旧的数据。这种行为在开发者社区众所周知,也是流行的memcached系统的默认行为。 redis中使用的LRU淘汰算法是一种近似LRU的算法。 淘汰策略 针对淘汰策略,redis有一下几种配置方案: 1、noeviction...[2023/1/20]
1.5万字总结 Redis 常见面试题&知识点
以下内容来源于于我开源的 JavaGuide (Java学习&&面试指南,Github 130k star,370人共同参与爱完善), 万字总结,质量有保障! 这篇文章最早写于2019年,经过不断完善,内容也更全面了,里面的很多内容也被很多人参考借鉴。 Redis 基础...[2023/1/16]
【Redis实战专题】「性能监控系列」全方位探索Redis的性能监控以及优化指南
Redis基本简介 Redis是一个开源(BSD 许可)、内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合等数据类型。内置复制、Lua 脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,...[2023/1/16]
.NetCore下基于FreeRedis实现的Redis6.0客户端缓存之缓存键条件优雅过滤
前言 众所周知内存缓存(MemoryCache)数据是从内存中获取,性能表现上是最优的,但是内存缓存有一个缺点就是不支持分布式,数据在各个部署节点上各存一份,每份缓存的过期时间不一致,会导致幻读等各种问题,所以我们实现分布式缓存通常会用上Redis 但如果在高并发的情况下读取Redis的缓存,...[2023/1/16]
Redis缓存何以一枝独秀?(2) —— 聊聊Redis的数据过期、数据淘汰以及数据持久化的实现机制
大家好,又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。 上一篇文章中呢,我们简单的介绍了下Redis的整体情况。作为集中式缓存的优秀代表,Redis可以帮助我们在项目中完成很...[2023/1/11]
Redis缓存何以一枝独秀?——从百变应用场景与热门面试题中感受下Redis的核心特性与使用注意点
大家好,又见面了。 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。 作为《深入理解缓存原理与实战设计》系列专栏,在前面的文章中,我们一起领略了Guava Cache、Caffeine、E...[2023/1/11]
将没有实现Serializable的类存储到Redis中方法示例
目录将实例对象存储到Redis中报错ObjectHashMapperJackson2HashMapperBeanUtilsHashMapper 将实例对象存储到Redis中报错 你有没有遇到过这种情况,需要将实例对象存储到Redis中,但是类的字段包含第三方依赖中的类并且此类没有 imple...[2023/1/11]
Redis网络模型究竟有多强
文章首发于公众号「蝉沐风的码场」,关注我,及时获取更多文章 如果面试官问我:Redis为什么这么快? 我肯定会说:因为Redis是内存数据库!如果不是直接把数据放在内存里,甭管怎么优化数据结构、设计怎样的网络I/O模型,都不可能达到如今这般的执行效率。 但是这么回答多半会让我直接回去等...[2023/1/6]
kestrel网络编程--开发redis服务器
1 文章目的 本文讲解基于kestrel开发实现了部分redis命令的redis伪服务器的过程,让读者了解kestrel网络编程的完整步骤,其中redis通讯协议需要读者自行查阅,文章里不做具体解析。 2 开发顺序 创建Kestrel的Redis协议处理者 配置监听的EndPoint并使用Re...[2022/12/12]
.NET 6 基于IDistributedCache实现Redis与MemoryCache的缓存帮助类
本文通过IDistributedCache的接口方法,实现Redis与MemoryCache统一帮助类。只需要在配置文件中简单的配置一下,就可以实现Redis与MemoryCache的切换。 目录IDistributedCacheIDistributedCache 方法:IDistribute...[2022/12/12]
【Redis场景1】用户登录注册
细节回顾: 关于cookie和se ion不熟悉的朋友; 建议阅读该博客:https: www.cnblogs.com/ityouknow/p/10856177.html 执行流程: 在单体模式下,一般采用这种模式来存储,传递、认证用户登录、注册等信息; 如果浏览器禁用Cookies...[2022/12/12]
如何基于 Redis 实现分布式锁
什么是分布式锁 分布式锁:不同进程必须以互斥方式使用共享资源的一种锁方法实现。 实现分布式锁的基础 互斥。任何时刻,只有一个客户端持有锁。 无死锁。最终总是有可能获得锁,即使持有锁的客户端已经崩溃。 单个 Redis 分布式锁实现 上锁 上锁需要考虑俩点 原子性 锁能自动释放 首先要...[2022/12/12]
详解 Redis 中 big keys 发现和解决
在使用 Redis 时,可能会出现请求响应慢、网络卡顿、数据丢失的情况。排查问题的时候,发现是 big keys 的问题。 什么是 big keys 在 Redis 中,一个字符串类型最大可以达到 512MB,其他非字符串类型的集合类型(list、set、hash、zset等)可以存储 40 ...[2022/12/5]
Springboot 整合 SpringCache 使用 Redis 作为缓存
一直以来对缓存都是一知半解,从没有正经的接触并使用一次,今天腾出时间研究一下缓存技术,开发环境为OpenJDK17与SpringBoot2.7.5 SpringCache基础概念 接口介绍 首先看看SpringCache中提供的两个主要接口,第一个是CacheManager缓存管理器接口...[2022/12/2]
面试官:介绍一下 Redis 三种集群模式
小码今天去面试。 面试官:给我介绍一下Redis集群, 小码:啊,平时开发用的都是单机Redis,没怎么用过集群了。 面试官:好的,出门右转不谢。 小码内心困惑:在小公司业务量也不大,单机的 Redis 完全够用,也不会发生宕机问题啊。面试要问到 Redis 集群该怎么办呢? Redis...[2022/11/28]
Redis系列11:内存淘汰策略 - Hello-Brand
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5:深入分析Cluster 集群模式 追求性能极致:Redis6.0的多线程模型 追求...[2022/11/21]
聊聊FASTER和进程内混合缓存
最近有一个朋友问我这样一个问题: 我的业务依赖一些数据,因为数据库访问慢,我把它放在Redis里面,不过还是太慢了,有什么其它的方案吗? 其实这个问题比较简单的是吧?Redis其实属于网络存储,我对照下面的这个表格,可以很容易的得出结论,既然网络存储的速度慢,那我们就可以使用内存RAM存...[2022/11/17]
redis缓存延时双删的原因分析
缓存为啥是删除,而不是更新? 如果是更新,存在分布式事务问题,可能出现修改了缓存,数据库修改失败的情况。只是删除缓存的话,就算数据库修改失败,下次查询会直接取数据库的数据,也不会出现脏数据。 延时双删是什么? 就是在增删改某实体类的时候,要对该实体类的缓存进行清空,清空的位置在数据库操作方...[2022/8/16]
Java-Redis-Redisson分布式锁的功能使用及实现
目录前置基础设施功能使用和介绍其他悲观锁的实现方式 前置 Java-Redis-Redi on配置基础上我们进行了改造,让锁的使用更加方便 基础设施 Redi onLock import java.lang.annotation.ElementType; import java.l...[2022/8/3]
Java Redis Redisson配置教程详解
目录需要的Mavenapplication-redis.ymlSe ion共享配置其他Redi on的Config配置方式Redi on的Config(单机版配置)Redi on的Config(哨兵版配置)Redi on的Config(主从版配置)Redi on的Config(集群模式)Redi o...[2022/8/3]
浅谈Redis缓存更新策略
内存淘汰超时剔除主动更新说明不用自己维护,利用Redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存给缓存数据添加TTL时间,到期后自动删除缓存,下次查询时更新缓存编写业务逻辑,在修改数据的同时,更新缓存一致性差一般好维护成本无低高 业务场景需求: 在基本不会更新...[2022/8/3]
浅谈Redis如何应对并发访问
目录前言原子性操作单命令模式多命令模式lua简介建议事务加锁总结 前言 项目中经常会遇到这种场景,我们需要先将Redis数据读取到本地,然后进行修改,修改完成后在将数据写回Redis,这种读取-修改-写回操作,我们称之为RMW操作。当有多个客户端对同一份数据执行RMW操作的话,Redis如何保证...[2022/8/1]
你了解Redis事务吗
目录前言ACID属性说明原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)Redis如何实现事务实现原理事务相关命令Redis的事务如何支持ACIDRedis事务的支持原子性吗?Redis事务的支持一致性吗?情况一:命令入队时就报错...[2022/8/1]
SpringBoot详解如何整合Redis缓存验证码
目录1、简介2、介绍3、前期配置3.1、坐标导入3.2、配置文件3.3、配置类4、Java操作Redis 1、简介 Redis is an open source (BSD licensed), in-memory data structure store, used as a database...[2022/7/4]
Redis?的内存淘汰策略和过期删除策略的区别
目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存淘汰策略有哪些?LRU 算法和 LFU 算法有什么区别?总结 前言 Redis 是可以对 key 设置过期时间的,...[2022/7/4]
Redis哨兵模式实现一主二从三哨兵
目录一、redis环境:二、哨兵介绍:三、安装redis:四、使用Redis主从复制的作用:五、配置redis一主二从:六、配置redis三哨兵: 一、redis环境: 环境:redis6.2.6linux虚拟机一台,contos7; 二、哨兵介绍: 1.一主二从三哨兵理论图: ...[2022/7/4]
利用Redis实现订单30分钟自动取消
目录业务场景实现思路开启 Redis key 过期提醒引入依赖相关配置redis 过期监听真的好么?实现关闭订单的方法 业务场景 我们以订单功能为例说明下: 生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定...[2022/6/27]
Redis7.0部署集群的实现步骤
目录Redis7.0部署集群详细版1、Redis集群内部结构设计2、cluster集群内部结构搭建3、主从下线和主从切换 Redis7.0部署集群详细版 集群的架构:集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果 集群的作用: 分散单台服务器的访...[2022/6/27]
Redis实现主从复制方式(Master&Slave)
目录主从复制方式(Master&Slave)一、Master&Slave是什么?二、它能干嘛?三、怎么玩?四、复制原理五、哨兵模式(sentinel)六、复制的缺点Redis master, slave节点部署详解 主从复制方式(Master&Slave) 由于前段时间公...[2022/6/20]
Java连接Redis全过程讲解
目录Java连接Redis引入jar包编写测试类Jedis常用方法API一、首先把 jedis-2.1.0.jar(jedis基础包)二、创建 jedis对象三、键操作四、字符串操作五、整数和浮点数操作六、列表(List)操作七、集合(Set)操作八、哈希(Hash)操作九、有序集合(Zsort)操...[2022/6/20]
Redis中pop出队列多个元素思考
目录业务场景及问题的提出解决方案1.多次请求2.利用Redis事务3.利用Pipeline 最近,在工作中遇到了一个关于Redis中list集合一次性pop所有数据的问题,相信很多小伙伴也会碰到拿到同样的问题,所以就拿出来聊一聊了。 业务场景及问题的提出 业务的情景是这样的,服务A 是面向客...[2022/5/23]
redis实现分布式session的解决方案
目录一、首先Se ion二、分布式Se ion补充: 一、首先Se ion Se ion 是客户端与服务器通讯会话技术, 比如浏览器登陆、记录整个浏览会话信息。se ion存放在服务器,关闭浏览器不会失效。 Se ion实现原理 客户对向服务器端发送请求后,Se ion 创建在服务器端,...[2022/3/8]
Redis中常见的几种集群部署方案
目录前言几种常用的集群方案主从集群模式全量同步增量同步举个栗子哨兵机制什么是哨兵机制如何保证选主的准确性如何选主选举主节点的规则哨兵进行主节点切换切片集群RedisCluster方案哈希槽重新分配避免HotKey如何发现HotKeyHotKey如何解决避免BigKeyBigKey存在问题如何发现Bi...[2022/3/7]