SpringBoot整合redis

本文介绍如何在Spring Boot项目中集成Redis作为缓存,包括依赖添加、配置、实体类定义、Service层实现及数据访问层设置,并通过测试验证缓存功能。

添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

redis配置

##redis配置
###默认redis数据库为db0
spring.redis.database=0
##服务器地址,默认为localhost
spring.redis.host=localhost
##连接端口,默认为6379
spring.redis.port=6379
##reis密码,默认为空
spring.redis.password=

创建类

实体类

@Entity
//声明此对象映射到数据库的数据表,该注释不是必须的,如果没有则使用系统的默认值
@Table(appliesTo = "ay_user")
public class AyUser implements Serializable {
    @Id //指定表的主键
    private String id;
    private String name;
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "AyUser{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

}
``

### service层
service接口
```java
public interface AyUserService {

    AyUser findById(String id);
}

service实现类

@Transactional
@Service
public class AyUserServiceImpl implements AyUserService {

    @Autowired
    private AyUserRepository ayUserRepository;

    @Resource
    private RedisTemplate redisTemplate;

    private static String ALL_USER = "ALL_USER_LIST";

 	@Override
    public AyUser findById(String id) {
        //查询redsi缓存中的数据
        List<AyUser> ayUserList = redisTemplate.opsForList().range(ALL_USER, 0, -1);
        if (ayUserList != null && ayUserList.size() > 0) {
            for (AyUser ayUser : ayUserList) {
                if (ayUser.getId().equals(id)) {
                    System.out.println("缓存查找");
                    return ayUser;
                }
            }
        }
        //查询数据库中的数据
        AyUser ayUser = ayUserRepository.findById(id).get();
        if (ayUser != null) {
            System.out.println("数据库查找");
            //将数据插入到缓存redis中
            redisTemplate.opsForList().leftPush(ALL_USER, ayUser);
        }

        return ayUser;
    }


}

数据访问(dao)层

由于这里使用的SpringDataJPA,所以不需要写任何代码,SpringDataJPA会帮我们实现功能。

public interface AyUserRepository extends JpaRepository<AyUser,String> {


}

测试

在默认生成的测试类中添加以下代码。

	@Resource
    private RedisTemplate redisTemplate;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Resource
    private AyUserService ayUserService;
    
	@Test
    public void testFindById() {
        AyUser ayUser = ayUserService.findById("1");
        System.out.println("user:" + ayUser);
		System.out.println("user:" + ayUserService.findById("1"));
    }
    

结果

第一次查询是从数据库中查询,查询到结果以后会把结果缓存在redis数据库中,第二次直接从缓存中读取数据。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值