DreamBoy_W.W.Y
不愿做菜鸟的小鸟,不断学习,目标是成为老鸟。
展开
-
【Redis】--RedissonClient的Lock锁详解
redisson的分布式锁在实际开发中经常遇到,这里将详细介绍各种Lock的源码,通过源码来了解每个Lock的使用,以及介绍相关示例。原创 2024-02-02 13:11:38 · 390 阅读 · 0 评论 -
【Redis】--实现延迟队列业务的场景
在实际项目中,某些业务使用延迟队列,但考虑实际情况,很难引用第三方组件RabbitMQ,这会增大系统的复杂和运维难度。这里就介绍Redis的Zset数据类型如何实现延迟队列。(1)、下单成功,30分钟未支付。支付超时,自动取消订单。Redisson的RDelayedQueue。消息中间件RabbitMQ 的延迟队列。(2)、会议开始前10分钟,消息提醒。在项目启动时,通过一个线程去触发自旋。Redis Zset实现的延迟队列。(3)、等待1小时候,短信通知。Redis的Zset实现。原创 2022-12-18 20:46:52 · 781 阅读 · 0 评论 -
redisson之RRateLimiter分布式限流
底层trySetRate方法同样是Lua脚本来实现。可以通过上面的文章了解自我实现分布式限流的逻辑,RRateLimiter原理就很清晰了。这篇文章有介绍,自己通过Lua脚本来实现分布式限流。如果是集成的Jedis等下,是可以采用这篇文章的方法自我实现。在redisson中,已经有现成的RRateLimiter分布式限流,下面就介绍下这个类怎么使用。原创 2022-11-27 17:28:04 · 765 阅读 · 0 评论 -
【redis】--springboot集成redisson
Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的 Java 常用对象,还提供了许多分布式服务。原创 2022-11-13 22:21:59 · 1586 阅读 · 0 评论 -
springboot集成lettuce
redistemplate常见5种类型的使用原创 2022-11-13 20:10:06 · 1012 阅读 · 0 评论 -
springboot2.x版本集成redis说明(lettuce、redisson)
目前主流springboot 2.x版本集成redis,主要使用lettuce和redisson。lettuce作为新式的redis客户端,基于netty采用异步非阻塞式IO,是线程安全的,优点是提供了很多redis高级功能,例如集群、哨兵、管道等,缺点是api抽象,学习成本高。lettuce好是好,但是jedis比他生得早。原创 2022-11-13 20:02:35 · 2413 阅读 · 0 评论 -
【Redis】--redis lua+令牌桶算法实现分布式限流
目录一、限流前言1.1、网关限流1.2、服务端限流--单机限流1.3、服务端限流--分布式限流1.4、实际应用---RateLimiter二、分布式限流--redis lua+令牌桶算法2.1、springboot集成redisTemplate2.2、redis lua+令牌桶算法代码实现一、限流前言无论是传统还是互联网技术框架,我们要保证系统的高可用----减少系统不能提供服务的时间,保证服务高度可用性。其中,保障高可用的实践方案之一:限流。按照个人理解,限流可分为如下:1.1、网关限流一般是原创 2022-03-19 18:43:37 · 1221 阅读 · 0 评论 -
布隆过滤器
目录一、布隆过滤器介绍二、布隆过滤器源码解读1、以guava的BloomFilter源码进行解读2、BloomFilter代码使用三、集群下布隆过滤器怎么使用1、setBit、getBit一、布隆过滤器介绍布隆过滤器实际上是一个很长的二进制向量【位数组】和一系列随机哈希映射函数【是为了减少误判】,每个哈希函数会映射元素到位数组中某一位上。主要用于检索一个元素是否在一个集合中。 一次查询返回的结果是可能在集合里或者绝对不在集合里。原理:当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中原创 2021-08-20 21:29:19 · 217 阅读 · 0 评论 -
【Redis】--缓存双写一致性分析、解决方案
对于高TPS的场景读写,为了保障DB系统性能压力,可以采用:“先更新缓存,后异步同步到DB”。借用MQ中间件,将有问题的key放入MQ,重新消费进行更新缓存【借用第三方组件,耗费大】。:这个方案有一个明显的问题,刚删除完缓存,还未更新数据库时,另一个读请求操作会加载旧的数据到缓存中,造成数据不一致。正常删除即结束,否则将这个信息发送到消息队列,专门有任务从消息队列中获取该数据,重新删除操作,直到成功。方案一:更新数据库失败,可以使用日志或消息队列补偿策略,重新将缓存的数据更新到数据库。原创 2021-08-07 16:09:28 · 4239 阅读 · 0 评论 -
【Redis】---redis分布式锁
redis和redisson使用原创 2021-07-13 21:51:41 · 131 阅读 · 1 评论 -
【Redis】--Redis缓存常见问题及解决方案
基本目录一、Redis雪崩1.1、问题描述和分析1.2、解决方法二、Redis穿透2.1、问题描述和分析2.2、解决方法2.3、布隆过滤器--BitMap原理2.3.1、问题思考2.3.2、具体原理过程2.4、布隆过滤器原理三、Redis穿击穿--Redis热点问题/爆品3.1、问题描述和分析3.2、解决方法3.3、解决方法缺陷思考3.4、caffiene本地缓存解决“Redis热点问题”四、Redis缓存预热一、Redis雪崩1.1、问题描述和分析问题现象描述每个(不同的)key(即数据)如果设置原创 2021-07-04 15:39:52 · 805 阅读 · 0 评论 -
【redis】--Redis lua实现“抢购”商品场景及压测验证
目录一、AB测试工具1.1、AB工具请求命令二、Redis lua实现“抢购”2.1、AB工具进行压缩一、AB测试工具ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、tomcat、IIS等其它Web服务原创 2021-04-10 21:29:40 · 476 阅读 · 0 评论 -
【Redis】---Redis管道Pipeline
通过TCP协议进行连接,所以管道是一次性发送多条命令并在执行完后一次性将结果返回。pipeline是利用一个网络连接socket,进行发送多条命令。而且Pipeline 实现的原理是队列,而队列的原理是先进先出,这样就保证数据的顺序性。1、ShardedJedisPipeline原理分析ShardedJedisPipeline管道:建立一个Jedis【即一个TCP网络连接】,在这个连接中进行多次子查询。所以降低的是网络连接通信的时间。这是一小段管道的代码 ShardedJedisPipeline原创 2020-08-15 09:58:33 · 306 阅读 · 0 评论 -
【Redis】---Redis内存回收机制
Redis的key一般都有过期时间设置。对过期的key,有两种清除方式:定期删除+惰性删除。定期删除策略:redis默认每个100ms随机抽取进行检查【不全部检查,是防止卡死】,是否有过期的key,有过期key则删除【会导致很多key到时间没有删除】。惰性删除策略:获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除【如果一直不请求这个key,那么会一直保存】。按照上面的分析,一些过期的key会被遗漏清除,一直存在Redis服务器中。日积月累原创 2020-08-15 15:12:37 · 744 阅读 · 0 评论 -
redis.conf的配置说明
下面是redis一些配置介绍################这个bind是CentOS对应IP地址是192.168.31.81,以便window下能连接到这台Redis服务器bind 127.0.0.1 192.168.31.81################Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no################当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.原创 2020-08-15 15:30:16 · 177 阅读 · 0 评论 -
【Redis】---Redis四种持久化方式
Redis是一个支持持久化的内存数据库。redis支持四种持久化方式,一是 Snapshotting(快照)也是RDB方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是diskstore方式。1、RDB方式将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。恢复时将快照文件直接读到内存中。(1).RDB触发方式手动触发一般是直接cmd命令操作。 使用save命令:此命令会使用Redis的主线程进程同步存储,阻塞当前的Redis服务器原创 2020-08-15 17:59:32 · 1031 阅读 · 0 评论 -
Redis常见五种数据结构及底层实现原理
Redis常见五种数据类型操作工作中经常使用到五种数据类型,记录那些通用操作。说明:下面的截图很早之前看的其他博客的截图,已经找不到出处。抱歉原作者提供资料。1、所有类型支持的通用操作2、String类型string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。3、Hash类型Redis hash 是一个 string 类型的 field 和 value 的映射表,每个 hash 可以存储 232 -1 键值对(40多亿)。4、List(列表)类原创 2020-08-09 19:05:10 · 934 阅读 · 0 评论 -
CentOS下搭建Redis
CentOS下搭建Redis下文介绍CentOS下搭建Redis。准备:redis-4.0.6.tar.gz,链接:https://download.csdn.net/download/xunmengyou1990/126995071、基本搭建步骤事先将redis-4.0.6.tar.gz拷贝到/opt/software目录下。/opt/software:存放包目录/opt/module:解压目录yum -y install gcc gcc-c++ libstdc+±devel 命令是:安装一原创 2020-08-09 18:53:03 · 239 阅读 · 0 评论