springboot之redis的应用
1、redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
2、这里我们重点介绍一下redis在springboot框架中的一些应用,主要是应用在spring-data-redis下面的RedisTemplate来实现数据的保存和删除。
3、我建立了一个工程来实现redis的各种访问。
1)项目目录结构

2)pom.xml.配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.troy</groupId>
<artifactId>springbootredis</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.7.RELEASE</version>
</dependency>
</dependencies> </project>
3)application.yml配置
spring:
redis:
host: 192.168.5.10
port: 6379
server:
port: 8082
这里说明一下:我这边redis是我自己本地搭建的。没有设置密码。
redis的搭建可以参考:http://www.cnblogs.com/ll409546297/p/6993778.html
过程中如果过存在问题可以参考:http://www.cnblogs.com/ll409546297/p/7698330.html
4)IRedisService接口包含相关的处理
public interface IRedisService {
/**
* 保存String
* @param key
* @param value
* @return
*/
public Boolean setString(String key,String value);
/**
* 获取String
* @param key
* @return
*/
public String getString(String key);
/**
* 保存list
* @param key
* @param list
* @return
*/
public Boolean setList(String key, List<String> list);
/**
* 获取list
* @param key
* @return
*/
public List<String> getList(String key);
/**
* 保存mao
* @param key
* @param map
* @return
*/
public Boolean setHashMap(String key, Map<String,String> map);
/**
* 获取map
* @param key
* @return
*/
public Map<String,String> getHashMap(String key);
/**
* 删除reids缓存
* @param key
* @return
*/
public Boolean removeKey(String key);
}
5)RedisServiceImpl实现过程
@Service
@Transactional
public class RedisServiceImpl implements IRedisService{ @Autowired
private RedisTemplate<String,String> redisTemplate; /**
* 保存String
* @param key
* @param value
* @return
*/
@Override
public Boolean setString(String key, String value) {
ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
valueOperations.set(key,value);
return true;
} /**
* 获取String
* @param key
* @return
*/
@Override
public String getString(String key) {
ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
return valueOperations.get(key);
} /**
* 保存list
* @param key
* @param list
* @return
*/
@Override
public Boolean setList(String key, List<String> list) {
ListOperations<String,String> listListOperations = redisTemplate.opsForList();
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
//右边入栈,保持最后一个数据在右边
listListOperations.rightPush(key,list.get(i));
}
}
return true;
} /**
* 获取list
* @param key
* @return
*/
@Override
public List<String> getList(String key) {
ListOperations<String,String > listOperations = redisTemplate.opsForList();
return listOperations.range(key,0,-1);//-1代表最后一个数字,-2代表倒数第二个
} /**
* 保存mao
* @param key
* @param map
* @return
*/
@Override
public Boolean setHashMap(String key, Map<String, String> map) {
HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
hashOperations.putAll(key,map);
return true;
} /**
* 获取map
* @param key
* @return
*/
@Override
public Map<String, String> getHashMap(String key) {
HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
return hashOperations.entries(key);
} /**
* 删除reids缓存
* @param key
* @return
*/
@Override
public Boolean removeKey(String key) {
redisTemplate.delete(key);
return true;
}
}
值得注意的是:RedisTemplate是直接注入使用的,并没有做任何配置,这里要归功于spring-data-redis的集成使用。
相比于springmvc的形式,这里简化了很多步骤。
springmvc的相关搭建可以参考:http://www.cnblogs.com/ll409546297/p/7203427.html
6)最后写个一个测试controller,这个只是为了方便测试,实际开发中基本没有这么处理的。。
@RestController
@RequestMapping("/api")
public class RedisResource { @Autowired
private IRedisService redisService; /**
* 添加String
* @param map
* @return
*/
@RequestMapping(value = "/addString",method = RequestMethod.POST)
public Object addString(@RequestBody Map<String,Object> map) {
return redisService.setString(map.get("key").toString(),map.get("value").toString());
} /**
* 获取string
* @param map
* @return
*/
@RequestMapping(value = "/getString",method = RequestMethod.POST)
public Object getString(@RequestBody Map<String,Object> map) {
return redisService.getString(map.get("key").toString());
} /**
* 添加list
* @param map
* @return
*/
@RequestMapping(value = "/addList",method = RequestMethod.POST)
public Object addList(@RequestBody Map<String,Object> map) {
return redisService.setList(map.get("key").toString(), (ArrayList<String>)map.get("value"));
} /**
* 获取list
* @param map
* @return
*/
@RequestMapping(value = "/getList",method = RequestMethod.POST)
public Object getList(@RequestBody Map<String,Object> map) {
return redisService.getList(map.get("key").toString());
} /**
* 添加map
* @param map
* @return
*/
@RequestMapping(value = "/addHashMap",method = RequestMethod.POST)
public Object addHashMap(@RequestBody Map<String,Object> map) {
return redisService.setHashMap(map.get("key").toString(),(HashMap)map.get("value"));
} /**
* 获取map
* @param map
* @return
*/
@RequestMapping(value = "/getHashMap",method = RequestMethod.POST)
public Object getHashMap(@RequestBody Map<String,Object> map) {
return redisService.getHashMap(map.get("key").toString());
} /**
* 删除redis缓存
* @param map
* @return
*/
@RequestMapping(value = "/remove",method = RequestMethod.POST)
public Object remove(@RequestBody Map<String,Object> map) {
return redisService.removeKey(map.get("key").toString());
}
7)基本的使用过程就是这些,redis的服务,在使用的使用效果很不错,在做某些数据初始化的时候,效果很好。
8)看一下最后的效果

4、这是只介绍了部分比较常使用的几种方式,如果自己想处理备份或者持久化,可以自己研究一下。
springboot之redis的应用的更多相关文章
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- SpringBoot整合Redis、ApachSolr和SpringSession
SpringBoot整合Redis.ApachSolr和SpringSession 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多 ...
- SpringBoot集成redis的key,value序列化的相关问题
使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...
- springboot集成redis(mybatis、分布式session)
安装Redis请参考:<CentOS快速安装Redis> 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml) <depe ...
- Windows环境下springboot集成redis的安装与使用
一,redis安装 首先我们需要下载Windows版本的redis压缩包地址如下: https://github.com/MicrosoftArchive/redis/releases 连接打开后如下 ...
- SpringBoot系列——Redis
前言 Redis是一个缓存.消息代理和功能丰富的键值存储.StringBoot提供了基本的自动配置.本文记录一下springboot与redis的简单整合实例 官方文档:https://docs.sp ...
- SpringBoot整合Redis及Redis工具类撰写
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...
- SpringBoot 整合 Redis缓存
在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. Spr ...
- 带着新人学springboot的应用04(springboot+mybatis+redis 完)
对于缓存也说了比较多了,大家对下图这一堆配置类现在应该有些很粗略的认识了(因为我也就很粗略的认识了一下,哈哈!),咳,那么我们怎么切换这个缓存呢?(就是不用springboot提供的默认的Simple ...
- SpringBoot系列十:SpringBoot整合Redis
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合 Redis 2.背景 Redis 的数据库的整合在 java 里面提供的官方工具包:jed ...
随机推荐
- POJ-1845 Sumdiv---因子和(快速幂+快速加法+因子和公式)
题目链接: https://cn.vjudge.net/problem/POJ-1845 题目大意: 求AB的因子和 解题思路: 先将A质因数分解,然后B次方的质因数指数就是乘上B即可 这里要mod9 ...
- android 智能提示
<AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:completionThreshol ...
- thinkphp5.0调用ajax无刷新加载数据
控制器层那边就是调数据返回,这里不再赘述,视图层页面ajax部分写法如下 function shanchu(obj) { var code = $(obj).attr("code" ...
- 2018 Multi-University Training Contest 4 Problem K. Expression in Memories 【模拟】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6342 Problem K. Expression in Memories Time Limit: 200 ...
- 16、SpringBoot-CRUD错误处理机制(3)
3).将自己指定的数据携带出去 出现错误以后,会来到/error请求,会被BasicErrorController 进行处理 响应出去的数据是由 getErrorAttributes 得到的( Abs ...
- Css3 实现关键帧动画
<div class="person"> </div> <script> var str1 = "@keyframes move{&q ...
- 【转】maven命令-P 参数引发的思考
序言: maven 命令:clean package -Dmaven.test.skip=true -P product 1.命令很简单是:清class文件,打包构建,跳过测试,注意最后一个 -P p ...
- C# 面向对象之多态
//多态:让一个对象表现的多种状态 //实现:子类重写父类的虚方法 Person person = new Person(); Chinese chinese = new Chinese(); Ame ...
- A Gentle Introduction to Transfer Learning for Deep Learning | 迁移学习
by Jason Brownlee on December 20, 2017 in Better Deep Learning Transfer learning is a machine learni ...
- css代码添加背景图片常用代码
css代码添加背景图片常用代码 1 背景颜色 { font-size: 16px; content: ""; display: block; width: 700px; heigh ...