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、这是只介绍了部分比较常使用的几种方式,如果自己想处理备份或者持久化,可以自己研究一下。

最新文章

  1. 关于MapReduce中自定义分组类(三)
  2. cefsharp重写默认js弹窗(alert/confirm/prompt)
  3. cctype头文件中的一些内容
  4. 非阻塞同步算法实战(三)-LatestResultsProvider
  5. JS中级 - 01:DOM节点
  6. 进入IT企业必读的200个.NET面试题
  7. socket.io遇到的问题
  8. Facebook 的系统架构(转)
  9. 省常中模拟 Test1 Day1
  10. Kafka Topic Partition Replica Assignment实现原理及资源隔离方案
  11. HDU SPFA算法 Invitation Cards
  12. 2015 多校联赛 ——HDU5334(构造)
  13. centos7的主机名配置
  14. 【HDU4751】Divide Groups
  15. IDEA 各版本在线激活(激活码)
  16. JavaScript基础笔记(五) 函数表达式
  17. pytest十四:doctest 框架
  18. golang文件传输服务
  19. js-jquery-SweetAlert【二】配置方法
  20. IE8 通过Jquery动态修改html不显示的问题

热门文章

  1. js call、apply和bind
  2. PL/SQL 编程(二)
  3. ADF系列-3.VO的查询
  4. oracle数据库恢复归档脚本
  5. Vue.js-简单的增删查功能
  6. VS2008 工具栏CMFCToolBar的使用总结(转)
  7. 微信小程序开发——进阶篇
  8. performPeriodicTask
  9. JAVA数据类型能串门不?
  10. js中两个日期大小比较,获取当前日期,日期加减一天