微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis笔记 spring boot简单整合redis

简介:

Redis(Remote Dictionary Server ):远程字典服务, 是一个key-value数据库

安装:

https://github.com/tporadowski/redis/releases

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwAitgvv-1634811658255)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1634806701315.png)]

打开直接下载zip压缩包解压即可

解压后:

打开命令框(终端)开始运行redis

redis-server.exe redis.windows.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zk3tSkQd-1634811829912)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1634806510810.png)]

导入依赖:

pom.xml:

<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.4.1</version>
</dependency>
<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>
<!--MysqL-->
<dependency>
    <groupId>MysqL</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

配置yml:

spring:
  datasource:
    driver-class-name: com.MysqL.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:MysqL://localhost:3306/test
  redis:
    host: 127.0.0.1
    port: 6379
    password:
    pool:
      max-active: 8
      max-wait: -1
      max-idle: 8
      min-idle: 0
    timeout: 30000

#打印数据库语句
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
server:
  port: 9999

添加工具类:

redis工具类:

/**
 * @author Jkchen
 * @description: redis工具类$
 * @date 2021/10/20 16:04
 */
@Component
public class RedisUtil {
    @Autowired
    Redistemplate<Object,Object> redistemplate;

    //存入数据到缓存
    public void setValue(String key,Object value){
        redistemplate.opsForValue().set(key,value);
    }

    //通过key 获得数据
    public Object getValue(String key){
        return  redistemplate.opsForValue().get(key);
    }

    //存入数据到缓存并设置过期时间(单位为秒)
    public void setValuesAndExpire(String key,Object value,long time){
        redistemplate.opsForValue().set(key,value,time, TimeUnit.SECONDS);
    }

    //删除缓存
    public void delete(String key){
        redistemplate.delete(key);
    }
}

redis配置类:

/**
 * @author Jkchen
 * @description: Redis配置
 * @date 2021/10/21 15:56
 */
@Configuration
public class RedisConfig   {
    // 使用Jackson2JsonRedisSerialize替换认JDK序列化
    @Bean
    public Redistemplate<Object,Object> redistemplate(RedisConnectionFactory redisConnectionFactory){
        Redistemplate<Object,Object> redistemplate = new Redistemplate<>();
        redistemplate.setConnectionFactory(redisConnectionFactory);
        // key采用String的序列化方式
        redistemplate.setKeySerializer(new StringRedisSerializer());
        // hash的key也采用String的序列化方式
        redistemplate.setHashKeySerializer(new StringRedisSerializer());
        // value序列化方式采用jackson
        redistemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        // hash的hash的value序列化方式采用jackson
        redistemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redistemplate;
    }
}

测试:

根据id查询信息

@Override
public Object findById(int id) {
    //根据key查询缓存
    User user = (User) redisUtil.getValue("userKey" + id);
    //判断是否为空
    if(user==null){
        //缓存为空
        user=userMapper.selectById(id);
        System.out.println("缓存为空查询数据库");
        //插入缓存并且设置过期时间(单位为秒)
        redisUtil.setValuesAndExpire("userKey"+id,user,30);
        System.out.println("插入缓存");
    }else{
        System.out.println("从redis里取出");
    }
    return user;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐