Springboot整合Redis步骤以及测试

首先安装Redis服务器

ubuntu14.04的安装

windows服务下的安装

1.Redis的依赖配置,pom.xml新增以下依赖:



    org.springframework.boot
    spring-boot-starter-data-redis


    com.google.code.gson
    gson
    2.6.2

Gson转换json数据格式工具

2.Redis配置,application.yml新增以下配置:

spring:
  redis:
      database: 0 # Redis数据库索引(默认为0)
      host: localhost # Redis服务器地址
      port: 6379 # Redis服务器连接端口
      password: # Redis服务器连接密码(默认为空)
      timeout: 60000ms # 连接超时时间(毫秒)
      jedis:
        pool:
            max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
            max-idle: 100 # 连接池中的最大空闲连接
            max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
            min-idle: 1 # 连接池中的最小空闲连接

3.RedisTemplate的初始化

@Configuration
public class RedisConfig{

    /**
     * 对存取的字符串进行一个json格式的系列化初始配置
     *
     * @param factory
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate template = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        // 设置key和value的序列化规则
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

 4.创建Redis服务类,gson将对象转换为json格式存储,需要取出数据时,再将json转换为java对象,UserInfo为实体用户User的 服务类

@Repository
public class UserRedis {
    @Resource
    private RedisTemplate redisTemplate;


    public void add(String key,Long time,UserInfo user){
        Gson gson = new Gson();
        redisTemplate.opsForValue().set(key,gson.toJson(user),time, TimeUnit.MINUTES);
    }

    public void add(String key, Long time, List users){
        Gson gson = new Gson();
        redisTemplate.opsForValue().set(key,gson.toJson(users),time,TimeUnit.MINUTES);
    }

    public UserInfo get(String key){
        Gson gson = new Gson();
        UserInfo user = null;
        String userJson = redisTemplate.opsForValue().get(key);
        if(!StringUtils.isEmpty(userJson))user = gson.fromJson(userJson,UserInfo.class);
        return user;
    }

    public List users(String key){
        Gson gson = new Gson();
        List users = null;
        String usersJson = redisTemplate.opsForValue().get(key);
        // 将期望解析的数据类型返回给gson
        if(!StringUtils.isEmpty(usersJson))users = gson.fromJson(usersJson,new TypeToken>(){}.getType());
        return users;
    }

    public void delete(String key){
        redisTemplate.opsForValue().getOperations().delete(key);
    }
}

5.Redis测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
    private Logger logger = LoggerFactory.getLogger(RedisTest.class);

    @Autowired
    UserRedis userRedis;

    @Before
    public void setup(){
        UserInfo user = new UserInfo();
        user.setCompanyId("123");
        user.setUserName("花无缺");
        user.setIdNo("1234113299002312421");
        user.setPkid("3212312313223123");
        userRedis.delete(this.getClass().getName()+"userByName:"+user.getUserName());
        userRedis.add(this.getClass().getName()+":userByPkid:"+user.getPkid(),10L,user);
    }

    @Test
    public void get(){
        UserInfo user = userRedis.get(this.getClass().getName()+":userByPkid:3212312313223123");
        logger.info("=================user==================name:{}",user.getUserName());
    }

}

6.IDEA的Run/Debug Configuration 配置中增加Junit配置项目,运行测试程序,点击右上角的Edit Configrations

Springboot整合Redis步骤以及测试_第1张图片

选择所在的类以及模块

Springboot整合Redis步骤以及测试_第2张图片

7.运行测试程序之后查看结果

 

你可能感兴趣的:(Springboot)