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中配置如下:

 ########################################################
###Redis (RedisConfiguration)
########################################################
spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.timeout=5000

3.编写代码

  1.创建model

 package com.haq.entity;

 import java.io.Serializable;

 /**
* Created by on 2017/2/24.
*/
public class User implements Serializable { private static final long serialVersionUId = 1L; private String id;
private String name; public User(){
super();
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
  2.创建RedisService
 package com.haq.common.redis;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service; import javax.annotation.Resource; /**
* Created by on 2017/3/1.
*/
@Service
public class RedisService { @Autowired
StringRedisTemplate stringRedisTemplate; @Resource(name = "stringRedisTemplate")
ValueOperations<String, String> valOpsStr; @Autowired
RedisTemplate<Object, Object> redisTemplate; @Resource(name = "redisTemplate")
ValueOperations<Object, Object> valOpsObj; /**
* 根据指定key获取String
* @param key
* @return
*/
public String getStr(String key){
return valOpsStr.get(key);
} /**
* 设置Str缓存
* @param key
* @param val
*/
public void setStr(String key, String val){
valOpsStr.set(key,val);
} /**
* 删除指定key
* @param key
*/
public void del(String key){
stringRedisTemplate.delete(key);
} /**
* 根据指定o获取Object
* @param o
* @return
*/
public Object getObj(Object o){
return valOpsObj.get(o);
} /**
* 设置obj缓存
* @param o1
* @param o2
*/
public void setObj(Object o1, Object o2){
valOpsObj.set(o1, o2);
} /**
* 删除Obj缓存
* @param o
*/
public void delObj(Object o){
redisTemplate.delete(o);
} }
  3.创建RedisController
 package com.haq.web;

 import com.haq.common.redis.RedisService;
import com.haq.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* Created by on 2017/3/1.
*/
@RestController
@RequestMapping("/redis")
public class RedisController { @Autowired
RedisService redisService; /**
* 设置Str缓存
* @param key
* @param val
* @return
*/
@RequestMapping(value = "setStr")
public String setStr(String key, String val){
try {
redisService.setStr(key, val);
return "success";
} catch (Exception e){
e.printStackTrace();
return "error";
}
} /**
* 根据key查询Str缓存
* @param key
* @return
*/
@RequestMapping(value = "getStr")
public String getStr(String key){
return redisService.getStr(key);
} /**
* 根据key产出Str缓存
* @param key
* @return
*/
@RequestMapping(value = "delStr")
public String delStr(String key){
try {
redisService.del(key);
return "success";
} catch (Exception e){
return "error";
}
} /**
* 设置obj缓存
* @param key
* @param user
* @return
*/
@RequestMapping(value = "setObj")
public String setObj(String key, User user){
try {
redisService.setObj(key, user);
return "success";
} catch (Exception e){
e.printStackTrace();
return "error";
}
} /**
* 获取obj缓存
* @param key
* @return
*/
@RequestMapping(value = "getObj")
public Object getObj(String key){
return redisService.getObj(key);
} /**
* 删除obj缓存
* @param key
* @return
*/
@RequestMapping(value = "delObj")
public Object delObj(String key){
try {
redisService.delObj(key);
return "success";
} catch (Exception e){
e.printStackTrace();
return "error";
}
} }

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谢谢

Spring Boot 学习笔记--整合Redis的更多相关文章

  1. Spring Boot 学习笔记--整合Thymeleaf

    1.新建Spring Boot项目 添加spring-boot-starter-thymeleaf依赖 <dependency> <groupId>org.springfram ...

  2. Spring Boot学习笔记 - 整合Swagger2自动生成RESTful API文档

    1.添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!--swagger2--> <dependency> <groupId>io.spr ...

  3. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  4. Spring Boot 2.x整合Redis

    最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...

  5. Spring Boot学习笔记2——基本使用之最佳实践[z]

    前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...

  6. Spring Boot 2.x 整合 Redis最佳实践

    一.前言 在前面的几篇文章中简单的总结了一下Redis相关的知识.本章主要讲解一下 Spring Boot 2.0 整合 Redis.Jedis 和 Lettuce 是 Java 操作 Redis 的 ...

  7. Spring Boot WebFlux-06——WebFlux 整合 Redis

    第06课:WebFlux 整合 Redis 前言 上一篇内容讲了如何整合 MongoDB,这里继续讲如何操作 Redis 这个数据源,那什么是 Reids? Redis 是一个高性能的 key-val ...

  8. spring boot整合jsp的那些坑(spring boot 学习笔记之三)

    Spring Boot 整合 Jsp 步骤: 1.新建一个spring boot项目 2.修改pom文件 <dependency>            <groupId>or ...

  9. Spring Boot学习笔记:整合Shiro

    Spring Boot如何和Shiro进行整合: 先自定义一个Realm继承AuthorizingRealm,并实现其中的两个方法,分别对应认证doGetAuthenticationInfo和授权do ...

随机推荐

  1. BASH SHELL not a valid identifier

    解决BASH SHELL脚本报错 ‘: not a valid identifier当在shell编辑脚本时,运行时出现了" ‘: not a valid identifier " ...

  2. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  3. 理解margin负值

    效果 上和左方的margin负值使元素向上和左方向移动,如果该元素position不是absolute或fixed,这还会导致之后的元素也向上,左移 下和右方的margin负值会缩小下和右方的空间,使 ...

  4. smarty fetch方法

    fetch   取得输出的内容 返回一个模板输出的内容(HTML代码),而不是直接显示出来,需要指定一个合法的模 板资源的类型和路径.你还可以通过 第二个可选参数指定一个缓存号,相关的信息可以查看缓存 ...

  5. [HDOJ2572]终曲

    Problem Description 最后的挑战终于到了!站在yifenfei和MM面前的只剩下邪恶的大魔王lemon一人了!战胜他,yifenfei就能顺利救出MM.Yifenfei和魔王lemo ...

  6. SFTP远程文件上传

    远程服务器remote_host=192.168.29.142用户为remote_www,用户当前目录为/home/remote_www 本地服务器local_host=192.168.29.135用 ...

  7. 1740: [Usaco2005 mar]Yogurt factory 奶酪工厂

    1740: [Usaco2005 mar]Yogurt factory 奶酪工厂 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 119  Solved:  ...

  8. 1592: [Usaco2008 Feb]Making the Grade 路面修整

    1592: [Usaco2008 Feb]Making the Grade 路面修整 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 428  Solv ...

  9. AVFoundation自定义拍照

    0.AVCapture  <AVFoundation/AVFoundation.h> 媒体采集需要的几个对象: 1.AVCaptureDevice: 代表抽象的硬件设备(如前置摄像头,后置 ...

  10. Java的Date和Time入门教程

    本文是一篇翻译文章,已取得原作者授权,原文地址是http://tutorials.jenkov.com/java-date-time/index.html Java语言的JDK中关于日期和时间的API ...