转载

springboot基础-整合redis

在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis

需要那些步骤呢。

准备

环境安装(任选)

Centos7 搭建redis-5单机服务

CentOs7 搭建 Redis-5 Cluster 集群服务

添加依赖

在项目中添加 spring-boot-starter-data-redis 依赖

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

配置 RedisConfig文件

@Configuration
public class RedisConfig {
    @Bean
    public StringRedisTemplate redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate redisTemplate = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(
                Object.class);
        ObjectMapper om = new ObjectMapper();
        om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        //设置完这个可以直接将对象以json格式存入redis中,但是取出来的时候要用JSON.parseArray(Json.toJsonString(object),Object.class)解析一下
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        //调用后完成设置
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

配置文件参数

application.yml

redis:
        # Redis数据库索引(默认为0)
       database: 0
       # Redis服务器地址
       host: 127.0.0.1
       # Redis服务器连接端口
       port: 6379
       # Redis服务器连接密码(默认为空)
       password: 
       # 连接池最大连接数(使用负值表示没有限制)
       pool:
           max-Active: 8
       # 连接池最大阻塞等待时间(使用负值表示没有限制)
           max-wait: -1
       # 连接池中的最大空闲连接
           max-idle: 8
       # 连接池中的最小空闲连接
           min-idle: 0
       # 连接超时时间(毫秒) 不能设为0 不然启动连接报超时异常
       timeout: 500

操作 Redis 工具类

//一定要扫描 不然直接使用工具类报空指针异常
@Compent
public class CacheUtils {
    @Autowired
    private RedisTemplate redisTemplate;

    private static CacheUtils cacheUtils;

     //如果不加这个就要在类上添加注解方法
    @PostConstruct
    public void init() {
        cacheUtils = this;
        cacheUtils.redisTemplate = this.redisTemplate;
    }

    /**
     * 保存到hash集合中
     *
     * @param hName 集合名
     * @param key
     * @param value
     */
    public static void hashSet(String hName, String key, String value) {
        cacheUtils.redisTemplate.opsForHash().put(hName, key, value);
    }

    /**
     * 从hash集合里取得
     *
     * @param hName
     * @param key
     * @return
     */

    public static Object hashGet(String hName, String key) {
        return cacheUtils.redisTemplate.opsForHash().get(hName, key);
    }

    /**
     省略 N 多方法
     。。。。。。
     */
}

测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = App.class)
public class AppTest {

    @Test
    public void test() throws Exception {
        CacheUtils.hashSet("test", "ymq", "www.ymq.io");
        System.out.println(CacheUtils.hashGet("test", "ymq"));
    }
}

代码我已放到 码云,导入 SpringBoot-Examples 项目

https://gitee.com/luoluo1995/...

springboot基础-整合redis

<center>长按二维码关注我们</center>

原文  https://segmentfault.com/a/1190000021318801
正文到此结束
Loading...