SpringBoot整合Redis实现简单的set、get

一、导入pom.xml文件相关的依赖并配置

  

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
 </dependency>

  以下是在application.xml中进行redis相关的配置(本文采用的springboot版本为2.1.7):

######配置redis#######
# Redis 数据库索引(默认为 0)
spring.redis.database=0
# Redis 服务器地址
spring.redis.host=127.0.0.1
# Redis 服务器连接端?
spring.redis.port=6379 
# Redis 服务器连接密码(默认为空)
spring.redis.password=
# 连接池最?连接数(使?负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最?阻塞等待时间(使?负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最?空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最?空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0

 

  项目运行前记得启动redis的server服务器。。

 

二、配置Redis的set、get模板

  这里配置了两个模板,一个是设置存放的值为String的模板redisTemplateForStr,一个是设置存放的值为Object的模板redisTemplateForObj:

@Configuration
@EnableCaching
public class MyRedisConfig extends CachingConfigurerSupport {

    @Bean(name="redisTemplateForStr")
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, String> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        template.setConnectionFactory(factory);
        //key序列化方式,如果不设置,会有乱码
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(redisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(redisSerializer);
        //key haspmap序列化
        template.setHashKeySerializer(redisSerializer);
        return template;
    }


    @Bean(name="redisTemplateForObj")
    public RedisTemplate<String, Object> redisTemplate2(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}
View Code

三、然后编写相应的工具类

/**
 * 利用RedisTemplate进行相关set、get方法的封装
 */
@Repository
public class RedisTemplateForGetSet {

    @Resource(name="redisTemplateForObj")
    RedisTemplate redisTemplate;

    @Resource(name="redisTemplateForStr")
    RedisTemplate redisTemplateStr;

    public <T> T getObjectFromRedis(String id){
        return  (T)redisTemplate.opsForValue().get(id);
    }
    
    public void setObjectToRedis(String id, Object object){
        redisTemplate.opsForValue().set(id,object);
    }

    public void setCheckCodeToRedis(String id, String checkCode){
        redisTemplateStr.opsForValue().set(id,checkCode);
    }

    public String getCheckCodeFromRedis(String id){
        String checkCode = (String)redisTemplateStr.opsForValue().get(id);
        return checkCode;
    }
}

四、测试

在注解为RestController的控制层中进行测试:

@RequestMapping("redis")
    public TUser testRedis(TUser tUser){
        String key = tUser.getId().toString();
        userRedisTemplate.setObjectToRedis(key,tUser);
        TUser user = userRedisTemplate.getObjectFromRedis(key);
        System.out.println(user.toString());
        return user;
    }

以下是测试结果:

  以上便是简单的redis配置并进行简单的set、get测试。

 

转载于:https://www.cnblogs.com/ring2/p/11399388.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现步骤: 1. 添加 Redis 依赖 在 `pom.xml` 文件添加 Redis 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置 Redis 在 `application.properties` 文件添加 Redis 相关配置: ```properties # Redis配置 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password= spring.redis.database=0 spring.redis.timeout=60000 ``` 3. 编写验证码生成和存储逻辑 编写一个 `VerificationCodeUtil` 工具类,生成验证码并将验证码存储到 Redis : ```java @Component public class VerificationCodeUtil { @Autowired private RedisTemplate<String, String> redisTemplate; /** * 生成验证码 * @param key 键 * @param expire 过期时间 * @return 验证码 */ public String generateCode(String key, long expire) { //生成四位数字的验证码 String code = String.format("%04d", new Random().nextInt(9999)); //将验证码存储到 Redis redisTemplate.opsForValue().set(key, code, expire, TimeUnit.SECONDS); return code; } } ``` 4. 编写验证码登录逻辑 编写一个 `LoginController` 控制器,实现验证码登录功能: ```java @RestController public class LoginController { @Autowired private VerificationCodeUtil verificationCodeUtil; @Autowired private RedisTemplate<String, String> redisTemplate; @PostMapping("/login") public String login(String phone, String code) { //从 Redis 获取验证码 String cacheCode = redisTemplate.opsForValue().get(phone); if (cacheCode == null) { return "验证码已过期,请重新获取"; } if (!cacheCode.equals(code)) { return "验证码错误"; } //验证码验证通过,执行登录逻辑 return "登录成功"; } @GetMapping("/getCode") public String getCode(String phone) { //生成验证码并存储到 Redis ,有效期为60秒 String code = verificationCodeUtil.generateCode(phone, 60); return code; } } ``` 至此,我们已经实现了使用 Redis 存储验证码并实现验证码登录的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值