
Redis
文章平均质量分 78
Redis
懒虫虫~
无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你。你抬头自卑,低头自得,唯有平视,才能看见真实的自己!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于SpringBoot+Redis实现RabbitMQ幂等性设计,解决MQ重复消费问题
配置死信交换机和死信队列,对于那些重复投递依然无法正确处理的消息,可以转移到死信队列,并设置相应的重试策略及最大重试次数,超过限制则记录日志、报警或手动介入处理。如果在执行消费的过程中,出错了(抛出Exception),则记录消费失败的状态,MQ会再次尝试去进行消费。这里是为了避免在消息开始消费后,RabbitMq宕机了,此时MQ并不知道这个消息最终有没有消费完成,因此重启MQ之后,MQ会重新消费这条消息。可以看到消费者服务,消费完第2个消息后,由于RabbitMQ宕机,本地服务报错,无法消费第3个消息。原创 2025-06-01 17:48:03 · 1959 阅读 · 1 评论 -
SpringBoot中接口签名防止接口重放
*** 获取请求体的字节数组* @return 请求体的字节数组*///参数字节数组,用于存储请求体的字节数据@Getter//Http请求对象/*** 构造函数,初始化包装类* @param request 原始HttpServletRequest对象* @throws IOException 如果读取请求体时发生IO错误*//*** 重写getInputStream方法,实现请求体的重复读取。原创 2025-05-04 16:18:18 · 1274 阅读 · 0 评论 -
关于Redis中的事务的理解
可以看到Redis中关于事务的指令主要包含exex、multi、unwatch、watch等。原创 2025-04-19 16:26:30 · 299 阅读 · 0 评论 -
SpringBoot集成JWT和Redis实现鉴权登录功能
目前市面上有许多鉴权框架,鉴权原理大同小异,本文简单介绍下利用JWT和Redis实现鉴权功能,算是抛砖引玉吧。主要原理就是“原创 2024-12-14 16:46:55 · 1217 阅读 · 0 评论 -
SpringBoot+Redis+@Cacheable实现缓存功能
SpringBoot+Redis+@Cacheable实现缓存原创 2023-01-12 22:02:25 · 1331 阅读 · 0 评论 -
基于SpringBoot+RabbitMQ+Redis开发的秒杀系统(异步下单、热点数据缓存、解决超卖)
本项目是参考网上资料,整理开发而成,项目代码中加入了自己的理解和实现。基于SpringBoot框架开发,实现的功能主要是登录、商品列表、商品详情、秒杀商品,订单详情等功能。在系统业务处理中,使用到分布式session维持会话、Redis预减库存降低数据库访问压力,消息队列异步下单(削峰)、客户端轮询结果、接口限流防刷等技术。原创 2022-09-12 17:06:18 · 11607 阅读 · 14 评论 -
【SpringBoot AOP Redis实现延时双删功能实战】
一、业务场景在多线程并发情况下,假设有两个数据库修改请求,为保证数据库与redis的数据一致性,修改请求的实现中需要修改数据库后,级联修改redis中的数据。请求一:A修改数据库数据 B修改redis数据请求二:C修改数据库数据 D修改redis数据并发情况下就会存在A ---> C ---> D ---> B的情况 (一定要理解线程并发执行多组原子操作执行顺序是可能存在交叉现象的)## 1、此时存在的问题 A修改数据库的数据最终保存到了redis中,C在A之后也修改了数据库数据。 此原创 2022-08-14 12:04:13 · 5471 阅读 · 11 评论 -
SpringBoot+Redis实现秒杀系统实战
一、单机版SpringBootRedisApplicationpackage com.example.demo;import org.redisson.Redisson;import org.redisson.config.Config;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.原创 2021-07-10 16:59:57 · 768 阅读 · 1 评论 -
NoSQL数据库Redis在Linux系统下的安装和运维
NoSQL数据库Redis在Linux系统下的安装和运维链接地址如下:https://blog.youkuaiyun.com/qq_15329947/article/details/87003791转载 2020-06-26 15:38:37 · 186 阅读 · 0 评论 -
Redis删除、获取特定前缀key的优雅实现
一、数据量不大情况下,用keysRedis的单线程服务模式,命令keys会阻塞正常的业务请求。如果你一次keys匹配的数量过多或者在del的时候遇到大key,都会直接导致业务的不可用,甚至造成redis宕机的风险。删除 //删除所有以U:INFO:开头的key Set<String> keys1 = redisTemplate.keys("U:INFO:" + "*"); if (StringUtil.isNotNull(keys)) {原创 2021-06-17 20:44:33 · 6514 阅读 · 0 评论 -
Redis大量数据插入
有些时候,Redis实例需要装载大量用户在短时间内产生的数据,数以百万计的keys需要被快速的创建。我们称之为大量数据插入(mass insertion),本文档的目标就是提供如下信息:Redis如何尽可能快的处理数据。本文参考网上方案特意整理总结如下:方式一:使用Luke协议,通过redis-cli –pipe发送数据到服务器使用正常模式的Redis 客户端执行大量数据插入不是一个好主意:因为一个个的插入会有大量的时间浪费在每一个命令往返时间上。使用管道(pipelining)是一种可行的办法,但是原创 2021-06-14 18:00:23 · 5567 阅读 · 0 评论 -
Redis存储对象的三种方式
存储对象的三种方式分别为:1.将对象序列化后保存到Redis2.将对象用FastJSON转为JSON字符串后存储3.将对象用Hash数据类型存储序列化工具类SerializeUtilpublic class SerializeUtil { /* * 序列化 * */ public static byte[] serizlize(Object object){ ObjectOutputStream oos = null; Byt原创 2021-06-10 20:32:23 · 17664 阅读 · 2 评论 -
使用Redis中间件设计商品秒杀活动(使用Java多线程模拟高并发环境)
一、引入相关依赖可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependencies> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version&g原创 2020-06-29 20:28:46 · 1960 阅读 · 0 评论 -
Redis之Pipeline(管道)
一、管道Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。管道(pipeline)可以一次性发送多条命令并在执行完后一次性将结果返回,pipeline 通过减少客户端与 redis 的通信次数来实现降转载 2021-06-01 15:03:35 · 1265 阅读 · 0 评论 -
Redis 的过期策略及手写LRU算法
一、Redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?1.1Redis 过期策略Redis 过期策略是:定期删除+惰性删除。所谓定期删除,指的是 Redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。假设 Redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 key,那 Redis 基本上就死了,cpu 负载会很高的,消耗在你的检查过期 key 上了。注意,这里可不是每隔 1原创 2021-02-19 18:46:22 · 578 阅读 · 1 评论 -
Redis面试题总结
redis 简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。为什么要用 redis/为什么要用缓存主要从“高性能”和“高并发”这两点来看待这个问题。高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢,原创 2020-09-20 19:11:12 · 802 阅读 · 0 评论