Springboot整合redis缓存

在实际开发中,为避免不必要的查询数据库,一般需要使用缓存中间件,本次使用redis作为缓存。

1. 安装Redis服务与客户端

 1. Redis 中文官网:http://www.redis.cn/下载
 2. Redis直接解压 Redis-x64-3.2.100.zip 即可,点击以下 redis-server.exe, 默认端口号:637
 3. 安装 Redis 可视化客户端 redis-desktop-manager-0.8.8.384.exe,直接双击安装并打开客户端连接至本地服务器。(此处较简单,不做详细阐述).

2. 了解Redis相关数据存储

  1.Redis中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。
  2.五种数据类型:String:<key, value> ,  Hash: <key,fields-values>,  List:有顺序可重复  , Set:无顺序不可重复  , Sorted Sets (zset) :有顺序,不能重复

3. springboot整合redis

1.IDEA快速创建一个springboot项目,并导入相关依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.在全局配置文件application.yml中配置数据库连接以及redis相关服务

spring:
  datasource:
    username: root
    password: 123456
    #mysql8版本以上的驱动包,需要指定以下时区
    url: jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8
    #mysql8版本以上指定新的驱动类
    driver-class-name: com.mysql.cj.jdbc.Driver

  #配置redis服务(密码默认为空,无需配置)
  redis:
    host: localhost
    port: 6379

3.在类路径下创建controller,mapper.pojo,service相关包以及相关的类,本例我以User为例。此外创建好相应的数据库并打开本地数据库服务
pojo:

//实体类必须实现序列化,因为redis自动配置类默认为jdk序列化器
public class User implements Serializable{
private Integer id;
//用户名
private String username;
//真实姓名
private String realName;
//用户密码
private String password;
//性别:1 女  2 男
private Integer gender;
//生日
private Date birthday;
//1管理员  2经理  3普通用户
private Integer userType;

public User() {
}

public User(String username, Integer gender) {
    this.username = username;
    this.gender = gender;
}

public Integer getId() {
    return id;
}

public User(Integer id, String username, String realName, String password, Integer gender, Integer userType) {
    this.id = id;
    this.username = username;
    this.realName = realName;
    this.password = password;
    this.gender = gender;
    this.birthday = new Date();
    this.userType = userType;
}  //此处get set toString方法省略

mapper:

//此处只演示查询
@Mapper
public interface UserMapper {

    @Select("select * from user where id = #{id}")
    User getUserById(Integer id);

service:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    //操作复杂类型
    @Autowired
    private RedisTemplate redisTemplate;
   public User getUserById(Integer id){
     //先查询一下缓存中是否有数据
    Object obj =  redisTemplate.opsForValue().get(id);
    if(obj !=null){
    return (User)obj;
    }
    //如果缓存中没有,则查询数据库,然后添加到数据库中
        User user = userMapper.getUserById(id);
      redisTemplate. opsForValue().set("user",user);
    }
}

controller:

//直接返回json数据,不返回页面
@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        User user = userService.getUserById(id);
        return user;

    }
}

4.以上准备工作均已完成,可以开始测试,启动springboot项目后,可在谷歌浏览器访问controller相应路径或postman中进行测试,并结合redis可视化客户端进行观察。(不做详细概述了)。
5.测试完后redis可视化客户端显示看起来就是这个花里胡哨的样子:

\xAC\xED\x00\x05sr\x00+com.mengxuegu.springbootcache.entities.User?\x19K\x87\x948w\x98\x02\x00\x07L\x00\x08birthdayt\x00\x10Ljava/util/Date;L\x00\x06gendert\x00\x13Ljava/lang/Integer;L\x00\x02idq\x00~\x00\x02L\x00\x08passwordt\x00\x12Ljava/lang/String;L\x00\x08realNameq\x00~\x00\x03L\x00\x08userTypeq\x00~\x00\x02L\x00\x08usernameq\x00~\x00\x03xpsr\x00\x0Ejava.util.Datehj\x81\x01KYt\x19\x03\x00\x00xpw\x08\x00\x00\x00\xF8\xCB\x85L\x00xsr\x00\x11java.lang.Integer\x12\xE2\xA0\xA4\xF7\x81\x878\x02\x00\x01I\x00\x05valuexr\x00\x10java.lang.Number\x86\xAC\x95\x1D\x0B\x94\xE0\x8B\x02\x00\x00xp\x00\x00\x00\x01q\x00~\x00\x09t\x00\x03666t\x00\x10\xE7\xB3\xBB\xE7\xBB\x9F\xE7\xAE\xA1\xE7\x90\x86\xE5\x91\x981q\x00~\x00\x09t\x00\x04root

这是因为redis底层默认是jdk序列化器,此处我们可以自定义一个序列化器:

import java.net.UnknownHostException;
/*
  自定义序列化器,使之在redis客户端显示为jason数据
* */
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<Object, Object> JsonRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setDefaultSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

再次查询就是这个样子啦:

{
  "id": 2,
  "username": "lisi",
  "realName": "李四",
  "password": "123",
  "gender": 2,
  "birthday": 437414400000,
  "userType": 2
}

6.完结,撒花!(第一次写,如有遗漏,请指明点出)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了很方便的方式整合Redis缓存。下面是使用Spring Boot整合Redis缓存的步骤: 1. 添加Redis依赖:在你的`pom.xml`文件中添加Redis依赖。可以使用下面的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接信息:在`application.properties`(或`application.yml`)文件中配置Redis连接信息,包括主机、端口、密码等。示例配置如下: ```properties spring.redis.host=your_redis_host spring.redis.port=your_redis_port spring.redis.password=your_redis_password ``` 3. 创建缓存配置类:创建一个Java类,用于配置Redis缓存。可以使用`@EnableCaching`注解开启缓存功能,以及使用`@Configuration`注解将该类声明为配置类。示例代码如下: ```java @Configuration @EnableCaching public class RedisCacheConfig { @Bean public RedisCacheConfiguration cacheConfiguration() { return RedisCacheConfiguration.defaultCacheConfig() .disableCachingNullValues(); } @Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder .fromConnectionFactory(redisConnectionFactory); return builder.build(); } } ``` 4. 使用缓存注解:在你的Service层的方法上使用Spring缓存注解来启用缓存功能。例如,可以使用`@Cacheable`注解来缓存方法的返回结果。示例代码如下: ```java @Service public class UserService { @Autowired private UserRepository userRepository; @Cacheable("users") public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } } ``` 这是一种简单的方式来使用Spring Boot整合Redis缓存。你可以根据自己的需求进一步配置和使用Redis缓存功能。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值