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 ...
随机推荐
- hdu-2886 Special Prime---数论推导
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2866 题目大意: 问你1到L中有多少个素数满足n^3 + p*n^2 = m^3(其中n,m为大于1 ...
- Mybatis批量插入及传参问题
先看需求:将报文对象Message批量插入分库分表的Oracle数据库中 一般如果直接传入List的话,需要加上parameterType="java.util.List" ,然后 ...
- jQuery 实现改变图片指定区域的颜色
javascript本身无法改变图片的颜色,不过我们可以通过一些技巧来实现一样的效果. 1.首先我们要知道图片哪些区域需要改变颜色,这里我们可以用执点地图的方法来弄 例1: <img src=& ...
- Windows与kali双系统安装启动项的选择问题
在安装kali的时候,选择了用linux的grub启动,但是在重启后发现启动项里已经没有Windows系统可以选择了. 网上资料说,进入kali的终端,输入以下命令: $ sudo update-gr ...
- 4.spring:@Profile,AOP
Profile: 可以根据当前的环境,动态激活和切换一系列的组件功能 指定组件在那个环境下才能被注册到容器中,不指定任何环境下都能注册到 1.加了环境标识的bean只有环境激活的时候才能注册到容器中 ...
- 提交文件到ng-pages分支
一.提交dist文件夹到ng-pages分支 git subtree push --prefix=dist origin gh-pages 二.提交所有文件到ng-pages分支 text git:( ...
- Anaconda安装与常用命令及方法(深度学习入门1)
Anaconda是一个软件发行版,它附带了 conda.Python 和 150 多个科学包及其依赖项. 安装Anaconda Anaconda分为Linux.Windows.Mac等版本,去 htt ...
- C# Path类 FileStream(文件流) 与 File(文件) 读取的区别
1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...
- apache Rewrite配置(转)
1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要 ...
- Spring - 父容器与子容器
一.Spring容器(父容器) 1.Mapper代理对象 2.Service对象 二.Springmvc(前端控制器)(子容器) Controller对象 1.标准的配置是这样的:Con ...