前言:最近新项目准备用 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. 1pom.xml 中添加 springBoot 官方整合的redis 依赖。
  2. <!--redis-->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-data-redis</artifactId>
  6. <version>2.0.4.RELEASE</version>
  7. </dependency>
  8.  
  9. <!-- fastjson ,这个自行添加,处理json-->
  10. <dependency>
  11. <groupId>com.alibaba</groupId>
  12. <artifactId>fastjson</artifactId>
  13. <version>1.2.49</version>
  14. </dependency>

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

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

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

  1. import com.alibaba.fastjson.JSONObject;
  2. import org.apache.logging.log4j.LogManager;
  3. import org.apache.logging.log4j.Logger;
  4. import org.springframework.data.redis.core.StringRedisTemplate;
  5. import org.springframework.stereotype.Component;
  6. import javax.annotation.Resource;
  7. import java.util.concurrent.TimeUnit;
  8.  
  9. /**
  10. * @author 路飞
  11. * @date 2018-9-8
  12. * @description redis工具类
  13. */
  14. @Component
  15. public class RedisUtil {
  16.  
  17. private final static Logger logger = LogManager.getLogger(RedisUtil.class);
  18.  
  19. @Resource
  20. private StringRedisTemplate stringRedisTemplate;
  21.  
  22. /**
  23. * @Author 路飞
  24. * @date 2018-09-08
  25. * @param key redis的key
  26. * @param value object类型的value
  27. * @description 存储object类型数据
  28. */
  29. public boolean set(String key, Object value) {
  30. boolean result = false;
  31. try {
  32. // 使用 JSONObject.toJSONString() 处理要存储的数据
  33. stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value));
  34. result = true;
  35. } catch (Exception e) {
  36. logger.error("写入reids缓存失败! 错误信息为:", e);
  37. }
  38. return result;
  39. }
  40.  
  41. /**
  42. * @Author 路飞
  43. * @date 2018-09-08
  44. * @param key redis的key
  45. * @param value object类型的value
  46. * @param expire 存活时间(key有效时间)
  47. * @description 存储object类型数据
  48. */
  49. public boolean set(final String key, Object value, int expire) {
  50. boolean result = false;
  51. try {
  52. // 使用 JSONObject.toJSONString() 处理要存储的数据
  53. stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(value), expire, TimeUnit.SECONDS);
  54. result = true;
  55. } catch (Exception e) {
  56. logger.error("写入reids缓存失败(存活时间)! 错误信息为:" + e.getMessage());
  57. }
  58. return result;
  59. }
  60.  
  61. /**
  62. * @Author 路飞
  63. * @date 2018-09-08
  64. * @param key redis的key
  65. * @description 根据key获取数据
  66. */
  67. public Object get(final String key) {
  68. Object result = null;
  69. try {
  70. String valueStr = stringRedisTemplate.opsForValue().get(key);
  71. if (!valueStr.isEmpty()) {
  72. result = JSONObject.parseObject(valueStr, Object.class);
  73. }
  74. } catch (Exception e) {
  75. logger.error("根据key获取数据失败!错误信息为: " + e.getMessage());
  76. }
  77. return result;
  78. }
  79.  
  80. /**
  81. * @Author 路飞
  82. * @date 2018-09-08
  83. * @param key redis的key
  84. * @description 判断key 是否存在
  85. */
  86. public boolean exists(final String key) {
  87. boolean result = false;
  88. try {
  89. result = stringRedisTemplate.hasKey(key);
  90. } catch (Exception e) {
  91. logger.error("判断redis中是否有对应key失败!错误信息为:" + e.getMessage());
  92. }
  93. return result;
  94. }
  95.  
  96. }

4 、用法举例:

在某个serviceImpl中 测试:

  1. // 注入 RedisUtil 工具类
  2. @Resource
  3. private RedisUtil redisUtil;
  4.  
  5. @Override
  6. public void test() {
  7. List<实体类> list = 获取数据;
  8. Map<String, Object> map = new HashMap<>();
  9. map.put("哈哈哈", "我是海贼王");
  10. map.put("dataList", list);
  11.  
  12. Boolean setResult = redisUtil.set("测试key", map, 300); // 保存key,并设置有效时间300秒
  13.  
  14. if(redisUtil.exists("测试key")) { // 判断key是否参在
  15.  
  16. Object getValue = redisUtil.get("测试key"); // 根据key 获取Object类型数据
  17. System.out.println(getValue);
  18. }
  19.  
  20. }

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

springBoot 官方整合的redis 使用教程:(StringRedisTemplate 方式存储 Object类型value)的更多相关文章

  1. springBoot(8)---整合redis

    Springboot整合redis 步骤讲解 1.第一步jar导入: <dependency> <groupId>org.springframework.boot</gr ...

  2. 【SpringBoot】整合Redis实战

    ========================9.SpringBoot2.x整合Redis实战 ================================ 1.分布式缓存Redis介绍 简介: ...

  3. Shiro整合springboot,freemaker,redis(含权限系统完整源码)

    区块链技术联盟 2018-02-08 17:06:40 目录 一.导语 二.shiro功能介绍 三.shiro详解 四.shiro实战案例分享 五.系统配置 六.其他 一.导语 今天推荐给大家一个非常 ...

  4. SpringBoot简单整合redis

    Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...

  5. springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑)

    springboot+layui 整合百度富文本编辑器ueditor入门使用教程(踩过的坑) 写在前面: ​ 富文本编辑器,Multi-function Text Editor, 简称 MTE, 是一 ...

  6. SpringBoot之整合Redis

    一.SpringBoot整合单机版Redis 1.在pom.xml文件中加入redis的依赖 <dependency> <groupId>org.springframework ...

  7. springboot整合mybatis,redis,代码(二)

    一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包 ...

  8. springboot整合apache ftpserver详细教程(看这一篇就够了)

    原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/12192425.html,否则将追究法律责任!!! 一.Apache ftpserver相关 ...

  9. SpringBoot开发二十-Redis入门以及Spring整合Redis

    安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...

随机推荐

  1. ef使用dbfirst方式连接mysql

    1.安装 mysql connector net 6.9.9  https://dev.mysql.com/downloads/file/?id=463758 和mysql for visual st ...

  2. css 样式表集合

    说到前端不得不说一下css样式 css样式是用来装饰我们的html让整个页面显得更丰富多彩,所以我们要熟悉各种css样式,本人搜集了一下 供大家参考一下 字体属性:(font) 大小 {font-si ...

  3. 基础架构之Redis

    项目开发过程中,有些信息的变动频率是很低但又经常访问到,这些信息我们往往放在缓存中,目前在缓存组件中,Redis绝对值得你列入使用计划.更多详细信息可以参考官网 https://redis.io/.这 ...

  4. Common in Hardware & Software

    A lot of common in Hardware programming & Software Programming

  5. C++中 set(集合容器)的用法

    set集合容器: 实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时, 它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点 ...

  6. 04_zookeeper的watcher机制

    [watcher简述] * zk针对每个节点的操作,都会有一个监督者:watcher * 当监控的某个对象(znode)发生了变化,则出发watcher * zk中的watcher是一次性的,出发后立 ...

  7. VC++中出现错误“ error c2065 'printf' undeclared identifier”的处理方法

    原文:http://blog.csdn.net/panpan639944806/article/details/20135311 有两种可能: 1.未加头文件 #include <stdio.h ...

  8. js if语句只写一个参数是什么意思?

    如 var a=0:if(!a){...}; avascript中以下值会被转换为false false undefined null 0 -0 NaN ""

  9. php遍历数组赋值

    <?php $arr=array( array("num"=>100,"name"=>"Liuxy","scor ...

  10. 【Leetcode】【Medium】Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...