Springboot整合Redis简单使用

引入依赖

  <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>

applicaton.yml配置 连接redis

server:
  port: 9000
spring:
  redis:
    database: 0 //redis有16个数据库 我们这里默认下表为0的
    host: localhost   //连接本机的redis
    port: 6379        //redis端口

自定义一个RedisTemplate

/**
 * @title: RedisConfig
 * @Author Tan
 * @Date: 2020/7/30 11:09
 * @Version 1.0
 */
@Configuration
public class RedisConfig {
    // 这是我给大家写好的一个固定模板,大家在企业中,拿去就可以直接使用!
    // 自己定义了一个 RedisTemplate
    @Bean
    @SuppressWarnings("all")
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)
    {
        // 我们为了自己开发方便,一般直接使用 <String, Object>
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);

        // Json序列化配置
        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);
        // String 的序列化
        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;
    }

}

这里手写一个接口 这样方便我们使用

@Component
public class RedisMapper {

    @Autowired
    private RedisTemplate redisTemplate;

    final String LAST_TO_DB_TIME = "last_to_db_time";

    /**
     * 功能描述:
     *   将Map类型的数据存入Redis
     * @param map 需要存入redis的map集合
     * @return : void
     * @author :
     * @date : 2020/7/23 13:38
     */
    public void setDataToRedis(Map map){
        redisTemplate.opsForValue().multiSet(map);
    }
    /**
     * 功能描述:
     *   通过keys批量从Redis取值
     * @param keys 批量获取redis值的键集合
     * @return : java.lang.Object
     * @author :
     * @date : 2020/7/23 13:41
     */
    public Object getDataFromRedis(List keys){
        return redisTemplate.opsForValue().multiGet(keys);
    }
    /**
     * 功能描述:
     *    通过key从Redis取值
     * @param key 获取redis值的键
     * @return : java.lang.Object
     * @author :
     * @date : 2020/7/23 13:42
     */
    public Object getDataFromRedis(Object key){
        return redisTemplate.opsForValue().get(key);
    }

    /**
     * 功能描述:
     *    从redis读取数据后设置有效时间
     * @param keys 1 需要设置有效时间的key集合
     * @param timeout 2 有效时间 单位分钟
     * @return : void
     * @author :
     * @date : 2020/7/24 11:17
     */
    public void setExpire(List keys,Integer timeout){
        for (Object key : keys) {
            redisTemplate.expire(key,timeout, TimeUnit.MINUTES);
        }
    }
    /**
     * 功能描述:
     *   根据key删除redis内数据
     * @param keys key集合
     * @return : void
     * @author :
     * @date : 2020/7/24 22:53
     */
    public void delRedisByKeys(List keys){
        redisTemplate.delete(keys);
    }

    /**
     * 功能描述:
     *   保存最后一次存入数据库的时间
     * @param date 1 已经入库的时间段
     * @return : void
     * @author :
     * @date : 2020/7/25 20:48
     */
    public void setLastToDBTime(Date date){
        redisTemplate.opsForValue().set(LAST_TO_DB_TIME,date);
    }

    /**
     * 功能描述:
     *   获取最后一次入库时间
     * @return : java.util.Date
     * @author :
     * @date : 2020/7/25 20:50
     */
    public Date getLastToDBTime(){
        return (Date)redisTemplate.opsForValue().get(LAST_TO_DB_TIME);
    }

    /**
     * 功能描述:
     *   redis存值
     * @param key 键
     * @param value 值
     * @return : void
     * @author :
     * @date : 2020/7/25 23:33
     */
    public void setDataToRedis(Object key,Object value){
        redisTemplate.opsForValue().set(key,value);
    }
}

写一个Contorller一点看看能不能用

public class StudentController {

  
    @Autowired
    RedisMapper redisMapper;

    @RequestMapping("/set")
    public String set(){
   

        redisMapper.setDataToRedis("王五","王五今年25");
        return "success";
    }

    @RequestMapping("/get")
    public Object get(){

       
        Object ww = redisMapper.getDataFromRedis("王五");

        return ww;
    }
}

先调set 存一个值到redis里
然后调get读取
在这里插入图片描述
ok到这里可以看到 redis使用成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值