• SpringBoot 使用AOP拦截实现Redis分布式锁

    在使用redis的setnx指令过程中,需要在每一个用到的地方手动加锁,手动释放锁,接下来介绍使用aop和redis实现一个轻量级的分布式锁。新建两个注解@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public@in...

    Redis 缓存设计与性能优化

    缓存设计缓存穿透缓存穿透原因缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常从存储层查询。通常我们的设计如图下所示:缓存穿透会导致每次的请求都会执行db查询,增加数据库的压力,从而失去了缓存的意义。造成这种情况出现基本原因有两个-自身业务代码或者数据出现问题-一些恶意攻击,怕从等...

    Redis Lua脚本原子性、高并发分布式锁

    在集群环境多节点下,存在多个进程竞争资源的问题,这时候传统Java自带的锁已经不能满足需求,这时就需要分布式锁。分布式锁有多种实现方案,Zookeeper等,而Redis的分布式锁性能非常高。模拟减库存场景@Slf4j@RequestMapping("/redis/lock")@...

    Redis 缓存高可用集群、水平扩展、水平缩容

    前言Redis有主从架构、哨兵架构,哨兵架构可以在master节点宕机的情况下,通过选举的方式切换slave节点作为新的master主节点。哨兵架构的情况下,只能提供一个master主节点,也就是说只能有一个“写”的节点,这种情况下redis的性能瓶颈问题就暴露出来了,它支撑不了很高的并发。而且在哨...

    Redis 主从架构、哨兵架构

    Redis主从架构传统搭建Redis主从先启动一个6379端口的redis,作为主节点,master。复制一份新的redis.conf文件进行修改,作为slave节点。#修改端口port6380#修改pid文件路径pidfile/var/run/redis_6380.pid#修改redis数据存放目...

    Redis 持久化,RDB、AOF、混合持久化

    RDB快照(snapshot)常用操作在默认情况下,Redis会将快照数据放到“dump.rdb”的文件中。并且该文件是一个被压缩过的二进制文件。而且可以对Redis设置多个生成RDB快照的策略。让Redis在某一个时间段内,修改次数达到设定的阈值,则触发持久化。打开redis.conf配置文件,配...

    Redis 渐进式遍历键

    Redis渐进式遍历键在工作中难免有时候会遇到遍历key的情景,但是redis是单线程处理命令的,如果说我们采用keys*的指令来进行遍历的话,那么很有可能会造成redis的单线程阻塞,因为这是一个耗时操作。那么这个时候可以采用Redis的scan指令,进行渐进式遍历键,也可以理解为分页遍历。防止数...

    Redis 核心数据结构

    Redis核心数据结构Redis具有五种核心数据结构。String结构,该结构用来存储字符串数据。Hash结构,该结构用来存储keyvalue键值对,可以理解为嵌套map。List列表,该结构用来存储列表数据,还可以用来当做队列结构,和栈结构。Set集合,该结构存储的数据不允许重复。ZSet集合,该...