Springboot整合Redis步驟以及測試

首先安裝Redis服務器

ubuntu14.04的安裝

windows服務下的安裝

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

<!--redis緩存-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.6.2</version>
</dependency>

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<String, String> 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<String,String> 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<UserInfo> 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<UserInfo> users(String key){
        Gson gson = new Gson();
        List<UserInfo> users = null;
        String usersJson = redisTemplate.opsForValue().get(key);
        // 將期望解析的數據類型返回給gson
        if(!StringUtils.isEmpty(usersJson))users = gson.fromJson(usersJson,new TypeToken<List<UserInfo>>(){}.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

選擇所在的類以及模塊

7.運行測試程序之後查看結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章