springboot集成redis怎么集成?springboot集成redis应用

TheDisguiser 2020-04-06 19:44:11 java常见问答 8392

Redis相信大家都使用过,这是一个非常优秀的数据库,那么问题来了,在项目开发中一般都会使用springboot开发项目,那么如何在springboot中集成redis呢?一起来了解一下吧。

redis数据库的缓存性能非常强大,是项目考虑上缓存的首选,这里讲述如何springboot中集成redis并操作缓存,spring data提供了对redis的操作,只要使用注解的方式就可以很方便的操作redis。

一、添加redis缓存支持依赖

     <!-- redis集成 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2、修改配置文件添加redis连接设置

只需要看追加的redis和cache部分,其他的跟之前是一样的

springboot集成redis3、修改TUserEntity类,实现序列化接口

实现序列化接口是为了序列化和反序列化当前类

就是将当前实体类以二进制的方式存取,这样就可以存入到redis中了

serialVersionUID 是为了保证类的序列化和反序列化时有一个唯一ID

springboot集成redis4、在UserServiceImpl类中添加缓存注解

这里就是重点了,这些注解就很方便的对我们的数据进行了缓存

@Cacheable 根据请求参数缓存

@CachePut 对结果进行缓存,如保存了一条数据可能马上相查这条数据,那么缓存后,下次就可以直接查缓存了而无需查数据库了

@CacheEvict 清空缓存

condition 条件缓存,如果为true就缓存,否则不缓存

· package com.apgblogs.springbootstudy.service;
·
· import com.apgblogs.springbootstudy.base.BaseService;
· import com.apgblogs.springbootstudy.dao.UserDao;
· import com.apgblogs.springbootstudy.entity.TUser;
· import com.apgblogs.springbootstudy.entity.TUserEntity;
· import com.apgblogs.springbootstudy.repository.UserRepository;
· import org.springframework.beans.factory.annotation.Autowired;
· import org.springframework.cache.annotation.CacheEvict;
· import org.springframework.cache.annotation.CachePut;
· import org.springframework.cache.annotation.Cacheable;
· import org.springframework.stereotype.Service;
· import org.springframework.transaction.annotation.Transactional;
·
· import java.util.List;
·
· /**
· * @author xiaomianyang
· * @description
· * @date 2019-06-13 10:35
· */
· @Service
· public class UserServiceImpl extends BaseService{
·
· @Autowired
· private UserRepository userRepository;
·
· /**
· * @description 查询所有用户
· * @author xiaomianyang
· * @date 2019-06-13 10:37
· * @param []
· * @return java.util.List
· */
· public ListgetUserList(){
· return userRepository.findAll();
· }
·
· /**
· * @description 查询单个用户
· * @author xiaomianyang
· * @date 2019-06-13 10:39
· * @param [id]
· * @return TUserEntity
· */
· @Cacheable(value="redisCache",condition = 
"#result!='null'",key="'redis_user_'+#id")
· public TUserEntity getUser(String id){
· if(!userRepository.existsById(id)){
· return null;
· }
· return userRepository.findById(id).get();
· }
·
· /**
· * @description 创建用户
· * @author xiaomianyang
· * @date 2019-06-13 10:45
· * @param [tUserEntity]
· * @return TUserEntity
· */
· @CachePut(value="redisCache",key="'redis_user_'+#result.id")
· public TUserEntity insertUser(TUserEntity tUserEntity){
· tUserEntity.setCreateBy("sys");
· tUserEntity.setUpdateBy("sys");
· return userRepository.save(tUserEntity);
· }
·
· /**
· * @description 修改用户
· * @author xiaomianyang
· * @date 2019-06-13 10:40
· * @param [tUserEntity]
· * @return TUserEntity
· */
· @CachePut(value="redisCache",condition = 
"#result!='null'",key="'redis_user_'+#tUserEntity.id")
· public TUserEntity updateUser(TUserEntity tUserEntity){
· TUserEntity 
tUserEntity1=userRepository.findById(tUserEntity.getId()).get();
· if(tUserEntity1==null){
· return null;
· }
· tUserEntity1.setUserName(tUserEntity.getUserName());
· tUserEntity1.setUserPswd(tUserEntity.getUserPswd());
· return userRepository.save(tUserEntity1);
· }
·
· /**
· * @description 删除用户
· * @author xiaomianyang
· * @date 2019-06-13 10:44
· * @param [id]
· * @return void
· */
· @CacheEvict(value = "redisCache",key="'redis_user_'+#id",beforeInvocation = 
false)
· public boolean deleteUser(String id){
· try{
· userRepository.deleteById(id);
· }catch(Exception e){
· e.printStackTrace();
· return false;
· }
· return true;
· }
· }

5、在SpringBootStudyApplication项目启动类上添加启用缓存注解

加入@EnableCaching 启用缓存注解

springboot集成redis6、在SpringBootStudyApplicationTests中测试加了注解的缓存方法

这里以保存用户和获取用户测试,其他的几个缓存可以自己试验一下

springboot集成redis在redis命令控制台查看所有keys

可以看到查询和保存的key就已经缓存到redis中了

[root@apg-server ~]# docker exec -it redis bash
root@98767f0b6826:/data# docker ps
bash: docker: command not found
root@98767f0b6826:/data# redis-cli -h localhost -a 123456
Warning: Using a password with '-a' or '-u' option on the command line 
interface may not be safe.
localhost:6379> keys *
(empty list or set)
localhost:6379> keys *
1) "redisCache::redis_user_4028f1816b7d66d9016b7d6be1340000"
localhost:6379> keys *
1) "redisCache::redis_user_4028f1816b7d66d9016b7d6be1340000"
2) "redisCache::redis_user_4028f1816bc71702016bc7170f340000"
localhost:6379>

以上就是本篇文章的所有内容,更多相关内容请持续关注本网站。