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 ...
随机推荐
- UVALive 4025 Color Squares(BFS)
题目链接:UVALive 4025 Color Squares 按题意要求放带有颜色的块,求达到w分的最少步数. //yy:哇,看别人存下整个棋盘的状态来做,我什么都不想说了,不知道下午自己写了些什么 ...
- html style标签
<div id="d1">或者<div class="d1">在css下定义id的函数前缀是#,定义class前缀是.css代码就可以这 ...
- shiro认证策略,授权
有具体问题的可以参考之前的关于shiro的博文,关于shiro的博文均是一次工程的内容 ! 认证策略: 修改认证策略: applicationContext.xml <!-- 认证器 --> ...
- Python re模块正则表达式
- SqlMapConfig.xml配置文件
SqlMapConfig.xml中配置的内容和顺序如下: 1.1 properties(属性) mybatis的属性加载顺序.读取顺序:properties------>resource或url ...
- argsort
argsort函数返回的是数组值从小到大的索引值One dimensional array:一维数组 >>> x = np.array([3, 1, 2]) >>> ...
- WPF引用ActiveX提示没有注册类或不是有效的Win32程序
VS2017开发WPF时,需要引用UKey组件读取插入的Ukey编号和密钥 该组件在网页端调用时使用ObjectId进行ActiveX注册即可,后来做成WPF客户端进行读取遇到该问题. 解决: 右键项 ...
- Vue教程:指令与事件(二)
一.插值 v-once 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新.但请留心这会影响到该节点上所有的数据绑定: span v-once>这个将不会改 ...
- css清除间隙
.clear{clear:both;height:0;width:0;line-height:0;overflow:hidden;}
- 轻量ORM-SqlRepoEx (七)AspNetCore应用
ORM-SqlRepoEx 是 .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵 ...