【SpringBoot】SpringBoot整合Redis(Spring Data Redis)

一、前言:

       现在做J2EE开发基本上都用spring全家桶了,由于项目中需要减轻数据库的访问压力,所以考虑添加缓存,之前采用SSM框架的时候对redis进行操作都是用的jedis。其实呢redis的客户端有两种实现方式,一种是调用jedis来实现,二是可以使用spring data redis,通过spring的封装来调用。

二、整合

      1、添加redis依赖


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

       2、application.yml配置文件配置redis的相关信息

spring:
  redis:
#    host: 127.0.0.1
    host: 192.168.224.225
    port: 6379
    password:

       3、配置redis整入spring的缓存框架

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.cache.interceptor.KeyGenerator;
import java.lang.reflect.Method;


//配置redis整入spring的缓存框架

@Configuration
@EnableCaching  //继承CachingConfigurerSupport并重写方法,配合该注解实现spring缓存框架的使用
public class RedisConfig extends CachingConfigurerSupport {
    /**载入配置文件配置的连接工厂**/
    @Autowired
    RedisConnectionFactory redisConnectionFactory;
    /*不提示警告信息*/
    @SuppressWarnings("rawtypes")
    @Autowired
    RedisTemplate redisTemplate;

    @Bean
    RedisTemplate objectRedisTemplate(){
        RedisTemplate redisTemplate=new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

    @Bean 
    @Override
    public CacheManager cacheManager(){
        RedisCacheManager redisCacheManager=new RedisCacheManager(redisTemplate);
        //设置缓存过期时间
//        redisCacheManager.setDefaultExpiration(60);//秒
        return redisCacheManager;
    }

    /**
     * 重写缓存key生成策略,可根据自身业务需要进行自己的配置生成条件
     * @return
     */
    @Bean 
    @Override
    public KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
    }

}

       至此,springboot整和redis就算配置完啦。

三、实现,

       真正操作spring data redis中用来真正操作redis的一是采用注解的方式,常用两个注解@Cacheable、@CacheEvit,二是采用RedisTemplate的方式。

       众所周知,redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String、List、Set、Hash、Zset。

        RedisTemplate中定义了对5种数据结构的操作

redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

        简单示例如下:

  @ApiOperation(value="测试缓存", notes="")
    @RequestMapping(value = "/getAddr", method= RequestMethod.GET)
    public String getAddress() {
        redisTemplate.opsForValue().set("001","河北省");
        Object o = redisTemplate.opsForValue().get("001");
        return o.toString();
    }

       


你可能感兴趣的:(Redis)