SpringBoot整合Redis實現簡單的set、get


一、導入pom.xml文件相關的依賴並配置

  

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
 </dependency>

  以下是在application.xml中進行redis相關的配置(本文采用的springboot版本為2.1.7):

######配置redis#######
# Redis 數據庫索引(默認為 0)
spring.redis.database=0
# Redis 服務器地址
spring.redis.host=127.0.0.1
# Redis 服務器連接端?
spring.redis.port=6379 
# Redis 服務器連接密碼(默認為空)
spring.redis.password=
# 連接池最?連接數(使?負值表示沒有限制) 默認 8
spring.redis.lettuce.pool.max-active=8
# 連接池最?阻塞等待時間(使?負值表示沒有限制) 默認 -1
spring.redis.lettuce.pool.max-wait=-1
# 連接池中的最?空閑連接 默認 8
spring.redis.lettuce.pool.max-idle=8
# 連接池中的最?空閑連接 默認 0
spring.redis.lettuce.pool.min-idle=0

 

  項目運行前記得啟動redis的server服務器。。

 

二、配置Redis的set、get模板

  這里配置了兩個模板,一個是設置存放的值為String的模板redisTemplateForStr,一個是設置存放的值為Object的模板redisTemplateForObj:

@Configuration
@EnableCaching
public class MyRedisConfig extends CachingConfigurerSupport {

    @Bean(name="redisTemplateForStr")
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, String> template = new RedisTemplate<>();
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();
        template.setConnectionFactory(factory);
        //key序列化方式,如果不設置,會有亂碼
        template.setKeySerializer(redisSerializer);
        //value序列化
        template.setValueSerializer(redisSerializer);
        //value hashmap序列化
        template.setHashValueSerializer(redisSerializer);
        //key haspmap序列化
        template.setHashKeySerializer(redisSerializer);
        return template;
    }


    @Bean(name="redisTemplateForObj")
    public RedisTemplate<String, Object> redisTemplate2(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key也采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisSerializer);
        // hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}
View Code

三、然后編寫相應的工具類

/**
 * 利用RedisTemplate進行相關set、get方法的封裝
 */
@Repository
public class RedisTemplateForGetSet {

    @Resource(name="redisTemplateForObj")
    RedisTemplate redisTemplate;

    @Resource(name="redisTemplateForStr")
    RedisTemplate redisTemplateStr;

    public <T> T getObjectFromRedis(String id){
        return  (T)redisTemplate.opsForValue().get(id);
    }
    
    public void setObjectToRedis(String id, Object object){
        redisTemplate.opsForValue().set(id,object);
    }

    public void setCheckCodeToRedis(String id, String checkCode){
        redisTemplateStr.opsForValue().set(id,checkCode);
    }

    public String getCheckCodeFromRedis(String id){
        String checkCode = (String)redisTemplateStr.opsForValue().get(id);
        return checkCode;
    }
}

四、測試

在注解為RestController的控制層中進行測試:

@RequestMapping("redis")
    public TUser testRedis(TUser tUser){
        String key = tUser.getId().toString();
        userRedisTemplate.setObjectToRedis(key,tUser);
        TUser user = userRedisTemplate.getObjectFromRedis(key);
        System.out.println(user.toString());
        return user;
    }

以下是測試結果:

  以上便是簡單的redis配置並進行簡單的set、get測試。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM