springBoot 官方整合的redis 使用教程:(StringRedisTemplate 方式存储 Object类型value)...

前言:最近新项目准备用 redis 简单的缓存 一些查询信息,以便第二次查询效率高一点。

项目框架:springBoot、java、maven 

说明:edis存储的数据类型,key一般都是String,但是value可能不一样,一般有两种,String和 Object; 
如果k-v都是String类型,我们可以直接用 StringRedisTemplate,这个是官方建议的,也是最方便的,直接导入即用,无需多余配置! 
如果k-v是Object类型,则需要自定义 RedisTemplate

但是本文 是采用 StringRedisTemplate 处理存储 Object类型。

1、前期准备

  首先保证安装好redis(自己的 阿里云之类的服务器),并开启远程访问权限(最好配置密码)。

打开 maven 的 pom.xml 添加以下内容:

1、pom.xml 中添加 springBoot 官方整合的redis 依赖。
  <!--redis-->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <version>2.0.4.RELEASE</version>
  </dependency>
 
 <!-- fastjson ,这个自行添加,处理json-->
  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.49</version>
  </dependency>

2、在springBoot的配置文件 application.yml 中添加 redis 信息

application.yml 中配置
 spring:
   #redis
    redis:
      database: 7          // 使用redis的db7库
      host: 192.xxx.x.xxx    // redis 服务器地址
      port: 6379
      password:

3、创建一个 StringRedisTemplate 方式实现的 redisUtil 类: 

import com.alibaba.fastjson.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * @author 路飞
 * @date 2018-9-8
 * @description redis工具类
 */
@Component
public class RedisUtil {

    private final static Logger logger = LogManager.getLogger(RedisUtil.class);

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * @Author 路飞
     * @date 2018-09-08
     * @param key   redis的key
     * @param value object类型的value
     * @description 存储object类型数据
     */
    public boolean set(String key, Object value) {
        boolean result = false;
        try {
            // 使用 JSONObject.toJSONString() 处理要存储的数据
            stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value));
            result = true;
        } catch (Exception e) {
            logger.error("写入reids缓存失败! 错误信息为:", e);
        }
        return  result;
    }

    /**
     * @Author 路飞
     * @date 2018-09-08
     * @param key       redis的key
     * @param value     object类型的value
     * @param expire    存活时间(key有效时间)
     * @description     存储object类型数据
     */
    public boolean set(final String key, Object value, int expire) {
        boolean result = false;
        try {
            // 使用 JSONObject.toJSONString() 处理要存储的数据
            stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value), expire, TimeUnit.SECONDS);
            result = true;
        } catch (Exception e) {
            logger.error("写入reids缓存失败(存活时间)! 错误信息为:" + e.getMessage());
        }
        return result;
    }


    /**
     * @Author 路飞
     * @date 2018-09-08
     * @param key       redis的key
     * @description     根据key获取数据
     */
    public Object get(final String key) {
        Object result = null;
        try {
             String valueStr = stringRedisTemplate.opsForValue().get(key);
             if (!valueStr.isEmpty()) {
                 result = JSONObject.parseObject(valueStr, Object.class);
             }
        } catch (Exception e) {
            logger.error("根据key获取数据失败!错误信息为: " + e.getMessage());
        }
        return result;
    }

    /**
     * @Author 路飞
     * @date 2018-09-08
     * @param key       redis的key
     * @description     判断key 是否存在
     */
    public boolean exists(final String key) {
        boolean result = false;
        try {
            result = stringRedisTemplate.hasKey(key);
        } catch (Exception e) {
            logger.error("判断redis中是否有对应key失败!错误信息为:" + e.getMessage());
        }
        return result;
    }


}

4 、用法举例:

 在某个serviceImpl中 测试:

// 注入 RedisUtil 工具类
@Resource
private RedisUtil redisUtil;

@Override
public void test() {
    List<实体类> list = 获取数据;
    Map<String, Object> map = new HashMap<>();
    map.put("哈哈哈", "我是海贼王");
    map.put("dataList", list);

    Boolean setResult = redisUtil.set("测试key", map, 300); // 保存key,并设置有效时间300秒

    if(redisUtil.exists("测试key")) { // 判断key是否参在

        Object getValue = redisUtil.get("测试key"); // 根据key 获取Object类型数据
        System.out.println(getValue);
    }


}

5、使用 RedisDesktopManager 客户端工具自行查看 自己保存的数据。

 

 

 

转载于:https://www.cnblogs.com/topfish/p/9613343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值