redis
文章平均质量分 61
ldcaws
这个作者很懒,什么都没留下…
展开
-
springboot+redis集群实现集群拓扑动态刷新温故
springboot项目,并集成redis集群,当redis集群节点宕掉后又恢复了,但springboot调用redis集群服务报错,下面对springboot集成redis集群实现集群拓扑动态刷新进行温习和巩固。redis集群需要搭建3主3从,在搭建用于公司生产环境的集群时,搭建3主6从,这样不会一个节点宕机导致全部宕机,可靠性更高,会搭3主3从就会搭3主6从。springboot2.3 以后加上下面配置可自动刷新拓扑,某节点挂掉后,会有新的主从关系,如果不配置,调用接口时程序会报错。原创 2024-08-08 20:12:24 · 542 阅读 · 1 评论 -
springboot+shiro+redis实现session共享和cache共享
在分布式应用中,若是使用了负载均衡,用户第一次访问,连接的A服务器,进行了登录操作进入了系统,当用户再次操作时,请求被转发到了B服务器,用户并没有在B进行登录,此时用户又来到了登录页面,这是难以理解和接受的,这就引出了session共享。对于shiro安全框架如何实现session共享?shiro共享分为两方面,一个是session共享,一个是cache共享。下面聊聊在springboot工程中整合shiro框架,并通过redis实现session共享和cache共享。原创 2023-06-26 19:00:00 · 2763 阅读 · 1 评论 -
windows环境下搭建redis集群
下面记录一下windows10环境下搭建redis3主3从集群,将过程分享出来,仅供学习研究使用。原创 2023-06-19 19:41:44 · 3352 阅读 · 5 评论 -
springboot集成redis集群实现集群拓扑动态刷新
一个redis-cluster的三主三从集群,在其中一个master节点挂了之后,springboot集成redis集群配置信息没有及时刷新,出现读取操作报错。下面聊聊如何实现springboot集成redis集群实现集群拓扑动态刷新。原创 2023-06-16 22:31:51 · 5329 阅读 · 0 评论 -
高可用性和双机热备浅析
在用户眼里,业务需要永远正常对外提供服务,这就要求应用系统的高可用(High availability,即 HA)。高可用主要是针对架构而言,第一步一般会采用分层的思想将一个庞大的应用系统拆分成应用层、中间件、数据存储层等独立的层,每一层再拆分成更细粒度的组件;第二步就是让每个组件对外提供服务,毕竟每个组件都不是孤立存在的,都需要互相协作,对外提供服务才有意义;第三步就是保证架构中所有组件以及对外暴露服务都要做到高可用,任何一个组件或其服务没做高可用,都意味着系统存在风险。原创 2023-05-30 20:30:00 · 1589 阅读 · 0 评论 -
Redis之高可用方案浅析
redis集群是一种通过将多个redis节点连接在一起以实现高可用性数据分片和负载均衡的技术。根据搭建的方式和集群的特性,redis集群主要有三种模式:主从复制Master-Slave模式、哨兵Sentinel模式和集群Cluster模式。容灾恢复:在哨兵模式下,redis集群可以在主节点出现故障时,快速切换到从节点,实现业务的无缝切换;高可用性:在cluster模式下,redis集群可以在某个节点发生故障时,自动进行故障转移,保证服务的持续可用;原创 2023-05-29 22:25:30 · 761 阅读 · 1 评论 -
springboot+redis实现秒杀浅析
removeOneEntryOnListRight方法会删除队列中最后一个元素,然后返回这个元素的值,若队列中灭有元素了,那么会返回null,且它们都是原子操作。这样,每个请求都无需经过加锁操作,直接利用redis的单线程特性,即可实现高并发下的秒杀:请求到达redis,redis会逐个执行,每一次执行要么返回一个值,要么返回null,很显然,有返回值的就是抢到了,返回null的就是没抢到。秒杀在电商业务中是非常典型的需求,有各种方案,下面浅析一下使用redis如何来实现。后在秒杀的方法中操作如下。原创 2022-12-16 10:58:55 · 390 阅读 · 0 评论 -
Redis集群高可用配置
Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。用redis-cli 创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)。删除6个节点中的aof、rdb文件,如rm -rf *.rdb *.aof。原创 2022-11-05 10:28:01 · 801 阅读 · 0 评论 -
springboot+redission再相识
Redission是一个在Redis的基础上实现的java驻内存数据网格,它不仅提供了一系列的分布式常用对象,还提供了许多分布式服务。但是两者也都点到为止,只给了你操作Redis数据库的脚手架,而Redisson则是基于Redis、Lua和Netty建立起了成熟的分布式解决方案,甚至redis官方都推荐的一种工具集。Redission是一个基于Redis实现的分布式工具,有基本分布式对象和高级又抽象的分布式服务,为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决方法,如用作分布式锁工具。原创 2022-09-09 19:30:00 · 568 阅读 · 0 评论 -
springboot+redis实现限流再相约
使用springboot集成redis实现一个简单的限流功能。实现简单的限流可以通过自定义注解来实现,限流可以分为不同的策略,如针对接口的全局性限流、针对ip的限流,限制1分钟内访问的次数。实例限流方式的枚举类public enum LimitType { /** * 默认策略全局限流 */ DEFAULT, /** * 根据请求IP进行限流 */ IP}限流注解@Target(ElementType.METHOD)@原创 2022-05-17 19:24:33 · 738 阅读 · 0 评论 -
springboot+redis实现热搜
使用springboot集成redis实现一个简单的热搜功能。搜索栏展示当前登录的个人用户的搜索历史记录;删除个人用户的搜索历史记录;插入个人用户的搜索历史记录;用户在搜索栏输入某字符,则将该字符记录下来以zset格式存储在redis中,记录该字符被搜索的个数;当用户再次查询了已在redis存储了的字符时,则直接累加个数;搜索相关最热的前十条数据;实例@Transactional@Service("redisService")public class RedisService {原创 2022-05-16 20:45:00 · 1586 阅读 · 0 评论 -
Redis高可用之温故
redis保证高可用主要有三种方式,主从、哨兵、集群。1、主从复制主从复制是指将一台redis服务器的数据,复制到其他的redis服务器。前者称为主节点master,后者称为从节点slave,且数据的复制是单向的。redis主从复制支持主从同步和聪聪同步。主从复制作用:数据冗余,主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式;故障恢复,当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;负载均衡,在主从复制的基础上,配置读写分离,可以由主节点提供写服务,从节点提供读服务,原创 2022-05-12 20:00:00 · 273 阅读 · 0 评论 -
Redis基础之温故
在日常开发中,必然离不开redis,下面对redis的基础温故一下,看看能否知新?1、whatredis是一种基于键值对(key-value)的NoSQL数据库。redis中的value支持string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)等多种数据结构,因此可以满足很多的应用场景。redis会将所有数据都存放在内存中,因此读写性能非常优秀。redis可以将内存数据利用快照和日志的方式保存到硬盘上,因此发生类似断电或机器故障时,内存中的数据不会“丢失原创 2022-05-12 19:00:00 · 129 阅读 · 0 评论 -
springboot工程中限流方式
限流,是防止用户恶意刷新接口。常见的限流方式有阿里开源的sentinel、redis等。1、google的guava,令牌桶算法实现限流Guava的 RateLimiter提供了令牌桶算法实现:平滑突发限流(SmoothBursty)和平滑预热限流(SmoothWarmingUp)实现。// RateLimiter提供了两个工厂方法,最终会调用下面两个函数,生成RateLimiter的两个子类。static RateLimiter create(SleepingStopwatch stopwatch原创 2022-03-26 19:30:00 · 4361 阅读 · 0 评论 -
springboot+redisson初尝试
redisson为redis的分布式解决方案,对redis进行了封装,经常应用于分布式锁场景。redis常见问题缓存穿透:程序中没有缓存x值,当大量请求获取一个不存在的x值时,由于缓存中没有,大量请求直接访问数据库,数据库压力陡增,从而出现穿透问题;解决:将查询结果为x值的数据缓存到redis中;缓存雪崩:大量缓存同一个时间内失效;解决:在设置数据失效时间时,增加一个随机数;缓存击穿:大量请求同时访问同一个正好过期的缓存数据;解决:添加分布式锁;实例<dependency>原创 2022-03-08 14:21:01 · 1430 阅读 · 1 评论 -
springboot+redission消息队列应用探索
在分布式系统中必备的一个中间件就是消息队列,通过消息队列对服务与服务间进行异步处理、应用解耦、流量削峰,常用的消息中间件有rabbitmq、rocketmq、kafka等。消息队列是一种异步的服务间通信方式,适用于分布式或微服务架构中,消息在被处理之前一直存储在队列上。如消息队列被用于分离重量级处理、缓冲或批处理工作或缓解高峰期工作。3个节点producer:消息生产者,负载生产和发送消息到broker;boroker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个queue;con原创 2022-01-20 12:21:31 · 2255 阅读 · 4 评论 -
Java之分布式锁浅谈
在java开发中,分布式锁常见的有redis分布式锁、zookeeper分布式锁 和 数据库分布式锁3种方式redis分布式锁应用setNXSETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。返回值:设置成功,返回 1 。设置失败,返回 0 。zookeeper分布式锁zookeeper种节点的顺序性,如原创 2021-11-22 21:30:45 · 643 阅读 · 0 评论 -
redis集群启动方式
在项目开发中,redis集群应用的越来越多,下面对redis集群的启动记录如下。进入每个节点的bin目录,执行如下./redis-server 6379/redis.conf./redis-server 6380/redis.confps -ef | grep redis确认所有的节点都启动后,接下来使用参数create 创建。如果redis版本为5之前可以使用ruby方式,redis集群命令:./redis-trib.rb create --replicas 1 ip1:port1 ip1:原创 2021-06-28 22:42:06 · 1665 阅读 · 0 评论 -
Redis常见使用场景
在日常开发中,多多少少都在使用redis中间件,比如用作缓存,分布式锁等,现将用到的场景记录下来,后续会更新哦。string类型```set key value //存入键值对get key value //根据键获取值del key //删除expire key timeout // 为key设置一个超时时间,超过时间会自动释放setnx key value //当且仅当key不存在时,set一个key为value的字符串,返回1;若key存在,则什么都不做,返回0incr key //原创 2021-01-09 17:29:35 · 183 阅读 · 0 评论 -
Redis客户端之开源可视化工具
在java web开发中经常会用到redis做为缓存,下面介绍一种redis可视化工具Another Redis DeskTop Manager下载地址:https://github.com/qishibo/AnotherRedisDesktopManager/下载windows版本Another-Redis-Desktop-Manager.1.3.9.exe后,双击exe安装,默认安装即可。打开工具,弹出新建连接,输入ip和port设置显示模式和语言模式可以进行key的新增原创 2020-12-21 16:17:56 · 553 阅读 · 0 评论 -
浅入浅出缓存穿透、缓存雪崩、缓存击穿的区别
开发中为解决高并发访问,通常会采用Redis缓存的方法,下面对使用Redis缓存时的缓存穿透、缓存雪崩、缓存击穿进行分析,是什么,为什么?注意:缓存不是万能的,在使用方面有很多考虑的问题,把缓存比喻成防弹衣,但是如果你没有穿好这件防弹衣会适得其反。在高并发场景下有一个常常被忽略的一个地方,读多还是写多,读多写少用缓存,写多读少用消息队列。为什么要用缓存?为了系统的高性能,在每个系统的性能指标中有两个重要的点,一个是性能最佳点和性能最大值,超过最大融载值就走向系统崩溃的边缘了。缓存穿透缓存穿透是指缓存原创 2020-09-29 10:12:00 · 161 阅读 · 0 评论