栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot项目集成redis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot项目集成redis


theme: vue-pro

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

写在前面

Redis是一款NoSql数据库,经常用于缓存数据,我们也经常要在不同系统框架中去集成Redis数据库的访问。

今天我们是要学习一下SpringBoot项目中是如何集成Redis的,而且我会在文章最后附上平时使用的工具类,一起来学习一下吧。

集成Redis步骤

首先我们在pom.xml文件中加入springboot-redis相关的jar包,代码如下:

xml org.springframework.boot spring-boot-starter-data-redis 由此来引入操作redis的相关jar包。

第二步,我们来初始化Redis相关配置,SpringBoot中一般是通过配置类初始化相关功能类的。

让我们来创建一个RedisConfiguration.java,代码如下:

```java @Configuration public class RedisConfiguration {

@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate template = new RedisTemplate<>();
    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;
}

} ```

初始化了相关配置类之后,我们在springboot配置文件中设置redis的相关ip和密码。

application.yml配置如下所示:

xml spring: redis: host: 127.0.0.1 password: test port: 6379 timeout: 1000

如此操作后,我们就能正常运行了,也能通过redis相关类进行对redis的操作类了。

再然后我们就要使用相关的工具类来进行调用了。

工具类代码如下:

``` @Component public class RedisUtil {

@Autowired
private RedisTemplate redisTemplate;


public boolean expire(String key, long time) {
    try {
        if (time > 0) {
            redisTemplate.expire(key, time, TimeUnit.SECONDS);
        }
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}


public long getExpire(String key) {
    return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}


public boolean hasKey(String key) {
    try {
        return redisTemplate.hasKey(key);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}


public void del(String... key) {
    if (key != null && key.length > 0) {
        if (key.length == 1) {
            redisTemplate.delete(key[0]);
        } else {
            redisTemplate.delete(CollectionUtils.arrayToList(key));
        }

    }

}

// ============================String=============================


public Object get(String key) {
    return key == null ? null : redisTemplate.opsForValue().get(key);
}


public boolean set(String key, Object value) {
    try {
        redisTemplate.opsForValue().set(key, value);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}


public boolean set(String key, Object value, long time) {
    try {
        if (time > 0) {
            redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
        } else {
            set(key, value);
        }
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}


public long incr(String key, long delta) {
    if (delta < 0) {
        throw new RuntimeException("递增因子必须大于0");
    }
    return redisTemplate.opsForValue().increment(key, delta);
}


public long decr(String key, long delta) {
    if (delta < 0) {
        throw new RuntimeException("递减因子必须大于0");
    }
    return redisTemplate.opsForValue().increment(key, -delta);
}

} ```

总结

以上就是我们在SpringBoot项目中如何集成和使用Redis的过程了,下面我们将会整体介绍一下SpringBoot-redis组件下的相关方法,与大家一起学习。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684992.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号