# springboot-redis **Repository Path**: fastsun666/springboot-redis ## Basic Information - **Project Name**: springboot-redis - **Description**: springboot2 web的demo项目,方便快速搭建测试环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 19 - **Created**: 2025-08-06 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot-redis #### 介绍 **功能介绍** 在使用Springboot2开发项目过程中,会遇到数据缓存,接口限流和加锁的需求。 springboot集成redis,实现三个功能 1. 使用注解@EnableCaching启用缓存,使用@Cacheable(value = "user", key = "#id")等注解实现数据自动缓存 2. 使用redisson实现限流功能, 3. 使用redisson实现分布式锁,通过注解和aop实现@DistributeLock(keyExpression="#user.userCode+'_'+#user.userName",scene="USER_SAVE") 另外,还实现了关键字段脱敏的实例代码 #### 软件架构 1. springboot 2. spring-data-redis 3. redisson #### 使用说明 1. 可以参考UserController类和UserService类 2. 使用Boolean canPass = slidingWindowRateLimiter.tryAcquire(user.getUserCode(), 1, 1)可以实现接口限流,没有使用注解,需要在代码中单独调用。 3. 插入时避免数据重复插入,可以使用分布式锁可以实现指定的key进行加锁,加锁后,在方法里还需要通过查询判断是否存在,不存在的时候再插入 这种方式灵活一些。还可以通过数据库的联合唯一索引达到数据唯一性的要求。 如果是更新,可以通过乐观锁实现数据一致性。 4. 脱敏的时候,在实体类加@JsonSerialize(using = PhoneDesensitizeSerializer.class)注解,返回的对象自动脱敏。使用的JackSon的功能实现。 #### 用到的技术 redis jackson #### 说明