Spring Boot 学习笔记--整合Redis

来源:互联网 发布:linux arp缓存时间 编辑:程序博客网 时间:2024/05/29 02:35


本篇博客转载于http://www.cnblogs.com/floay/p/6485742.html,经实验运行成功,作者写作思路清晰,非常棒,转载下做为笔记。


1.新建Spring Boot项目

添加spring-boot-starter-data-redis依赖

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

本文会根据StringRedisTemplate、RedisTemplate这两个模板来介绍,其中StringRedisTemplate继承自RedisTemplate,只能操作键值都是String类型的数据。在实际开发中建议使用RedisTemplate<K,V>。

查询源码可知RedisTemplate默认使用JdkSerializationRedisSerializer序列化,而StringRedisTemplate则使用StringRedisSerializer。

2.配置redis

在application.properties中配置如下:

复制代码
 1 ######################################################## 2 ###Redis (RedisConfiguration) 3 ######################################################## 4 spring.redis.database=1 5 spring.redis.host=127.0.0.1 6 spring.redis.port=6379 7 spring.redis.password= 8 spring.redis.pool.max-idle=8 9 spring.redis.pool.min-idle=010 spring.redis.pool.max-active=811 spring.redis.pool.max-wait=-112 spring.redis.timeout=5000
复制代码

3.编写代码

  1.创建model

复制代码
 1 package com.haq.entity; 2  3 import java.io.Serializable; 4  5 /** 6  * Created by on 2017/2/24. 7  */ 8 public class User implements Serializable { 9 10     private static final long serialVersionUId = 1L;11 12     private String id;13     private String name;14 15     public User(){16         super();17     }18 19     public String getId() {20         return id;21     }22 23     public void setId(String id) {24         this.id = id;25     }26 27     public String getName() {28         return name;29     }30 31     public void setName(String name) {32         this.name = name;33     }34 35     @Override36     public String toString() {37         return "User{" +38                 "id='" + id + '\'' +39                 ", name='" + name + '\'' +40                 '}';41     }42 }
复制代码

 

  2.创建RedisService
复制代码
 1 package com.haq.common.redis; 2  3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.data.redis.core.RedisTemplate; 5 import org.springframework.data.redis.core.StringRedisTemplate; 6 import org.springframework.data.redis.core.ValueOperations; 7 import org.springframework.stereotype.Service; 8  9 import javax.annotation.Resource;10 11 /**12  * Created by on 2017/3/1.13  */14 @Service15 public class RedisService {16 17     @Autowired18     StringRedisTemplate stringRedisTemplate;19 20 21     @Resource(name = "stringRedisTemplate")22     ValueOperations<String, String> valOpsStr;23 24     @Autowired25     RedisTemplate<Object, Object> redisTemplate;26 27     @Resource(name = "redisTemplate")28     ValueOperations<Object, Object> valOpsObj;29 30     /**31      * 根据指定key获取String32      * @param key33      * @return34      */35     public String getStr(String key){36         return valOpsStr.get(key);37     }38 39     /**40      * 设置Str缓存41      * @param key42      * @param val43      */44     public void setStr(String key, String val){45         valOpsStr.set(key,val);46     }47 48     /**49      * 删除指定key50      * @param key51      */52     public void del(String key){53         stringRedisTemplate.delete(key);54     }55 56     /**57      * 根据指定o获取Object58      * @param o59      * @return60      */61     public Object getObj(Object o){62         return valOpsObj.get(o);63     }64 65     /**66      * 设置obj缓存67      * @param o168      * @param o269      */70     public void setObj(Object o1, Object o2){71         valOpsObj.set(o1, o2);72     }73 74     /**75      * 删除Obj缓存76      * @param o77      */78     public void delObj(Object o){79         redisTemplate.delete(o);80     }81 82 }
复制代码
  3.创建RedisController
复制代码
  1 package com.haq.web;  2   3 import com.haq.common.redis.RedisService;  4 import com.haq.entity.User;  5 import org.springframework.beans.factory.annotation.Autowired;  6 import org.springframework.web.bind.annotation.RequestMapping;  7 import org.springframework.web.bind.annotation.RestController;  8   9 /** 10  * Created by on 2017/3/1. 11  */ 12 @RestController 13 @RequestMapping("/redis") 14 public class RedisController { 15  16     @Autowired 17     RedisService redisService; 18  19     /** 20      * 设置Str缓存 21      * @param key 22      * @param val 23      * @return 24      */ 25     @RequestMapping(value = "setStr") 26     public String setStr(String key, String val){ 27         try { 28             redisService.setStr(key, val); 29             return "success"; 30         } catch (Exception e){ 31             e.printStackTrace(); 32             return "error"; 33         } 34     } 35  36     /** 37      * 根据key查询Str缓存 38      * @param key 39      * @return 40      */ 41     @RequestMapping(value = "getStr") 42     public String getStr(String key){ 43         return redisService.getStr(key); 44     } 45  46  47     /** 48      * 根据key产出Str缓存 49      * @param key 50      * @return 51      */ 52     @RequestMapping(value = "delStr") 53     public String delStr(String key){ 54         try { 55             redisService.del(key); 56             return "success"; 57         } catch (Exception e){ 58             return "error"; 59         } 60     } 61  62  63     /** 64      * 设置obj缓存 65      * @param key 66      * @param user 67      * @return 68      */ 69     @RequestMapping(value = "setObj") 70     public String setObj(String key, User user){ 71         try { 72             redisService.setObj(key, user); 73             return "success"; 74         } catch (Exception e){ 75             e.printStackTrace(); 76             return "error"; 77         } 78     } 79  80     /** 81      * 获取obj缓存 82      * @param key 83      * @return 84      */ 85     @RequestMapping(value = "getObj") 86     public Object getObj(String key){ 87         return redisService.getObj(key); 88     } 89  90  91     /** 92      * 删除obj缓存 93      * @param key 94      * @return 95      */ 96     @RequestMapping(value = "delObj") 97     public Object delObj(String key){ 98         try { 99             redisService.delObj(key);100             return "success";101         } catch (Exception e){102             e.printStackTrace();103             return "error";104         }105     }106 107 }
复制代码

4.运行测试

1.StringRedisTemplate

http://127.0.0.1:8080/redis/setStr?key=aa&val=name

http://127.0.0.1:8080/redis/getStr?key=aa

http://127.0.0.1:8080/redis/delStr?key=aa

2.RedisTemplate

http://127.0.0.1:8080/redis/setObj?key=aa&id=1&name=test

http://127.0.0.1:8080/redis/getObj?key=aa

http://127.0.0.1:8080/redis/delObj?key=aa

以上地址都能通过测试,在这里就不一一截图了

 

后记

可以直接使用redistemplate来保存string类型,不过使用redis client看起来就不太直观,因为JdkSerializationRedisSerializer是使用二进制形式存储数据。

最后希望大家有问题能多多指教,O(∩_∩)O谢谢

 

作者: 采采灬卷耳

<http://www.cnblogs.com/floay/>

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 欢迎咨询。


原创粉丝点击