Spring Data Redis —— 快速入门
环境要求:Redis 2.6及以上,javase 8.0及以上;
一、Spring Data Redis 介绍
Spring-data-redis是spring的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。
spring-data-redis针对jedis提供了如下功能:
1.连接池自动管理,提供了一个高度封装的“RedisTemplate”类.
2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
- ValueOperations:简单键值对操作 String
- SetOperations:set类型数据操作 set
- ZSetOperations:zset类型数据操作 sortedset---->zset
- HashOperations:针对hash类型的数据操作 hash
- ListOperations:针对list类型的数据操作 list
二、入门案例
1、环境构建
使用springboot构建项目选择redis依赖

2、配置redis
将application.properties修改为application.yml的格式
spring:
redis:
database: 0
host: localhost
port: 6379
password:
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
3、在test中SpringDataRedisDemoApplicationTests.java中测试相关api
package com.cenobitor.spring_data_redis_demo; import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Set; @RunWith(SpringRunner.class)
@SpringBootTest
public class SpringDataRedisDemoApplicationTests { @Autowired
private RedisTemplate redisTemplate; @Test
public void contextLoads() {
} /**
* 值得操作
*/
@Test
public void setValue(){
redisTemplate.boundValueOps("name").set("redis");
} @Test
public void getValue(){
String str = (String) redisTemplate.boundValueOps("name").get();
System.out.println(str);
Assert.assertNotNull(str);
} /**
* set类型的操作
*/
@Test
public void setSetValue(){
redisTemplate.boundSetOps("nameset").add("曹操");
redisTemplate.boundSetOps("nameset").add("孙权");
redisTemplate.boundSetOps("nameset").add("刘备");
}
@Test
public void getSetValue(){
Set nameset = redisTemplate.boundSetOps("nameset").members();
System.out.println(nameset);//[刘备, 孙权, 曹操]
}
//删除集合中的某个元素
@Test
public void deleteSetValue(){
Long remove = redisTemplate.boundSetOps("nameset").remove("刘备");
System.out.println(remove);
Assert.assertEquals("1",remove);
}
//删除整个集合
@Test
public void deleteSet(){
Boolean nameset = redisTemplate.delete("nameset");
Assert.assertEquals(true,nameset);
} /**
* List类型操作
*/
//右压栈:后添加的对象排在后边
@Test
public void setListValue1(){
redisTemplate.boundListOps("namelist1").rightPush("刘备");
redisTemplate.boundListOps("namelist1").rightPush("关羽");
redisTemplate.boundListOps("namelist1").rightPush("张飞");
}
@Test
public void getListValue1(){
List list = redisTemplate.boundListOps("namelist1").range(0, -1);
System.out.println(list);//[刘备, 关羽, 张飞]
}
//左压栈:后添加的对象排在前边
@Test
public void setListValue2(){
redisTemplate.boundListOps("namelist2").leftPush("刘备");
redisTemplate.boundListOps("namelist2").leftPush("关羽");
redisTemplate.boundListOps("namelist2").leftPush("张飞");
}
@Test
public void getListValue2(){
List list = redisTemplate.boundListOps("namelist2").range(0, -1);
System.out.println(list);//[张飞, 关羽, 刘备]
}
//查询集合某个元素
@Test
public void searchListByIndex(){
String s = (String) redisTemplate.boundListOps("namelist1").index(1);
System.out.println(s);//关羽
}
//移除集合某个元素
@Test
public void removeListByIndex(){
redisTemplate.boundListOps("namelist1").remove(1, "关羽");
} /**
* Hash类型操作
*/
@Test
public void setHashValue(){
redisTemplate.boundHashOps("namehash").put("a", "唐僧");
redisTemplate.boundHashOps("namehash").put("b", "悟空");
redisTemplate.boundHashOps("namehash").put("c", "八戒");
redisTemplate.boundHashOps("namehash").put("d", "沙僧");
}
@Test
public void getHash(){
//提取所有的KEY
Set s = redisTemplate.boundHashOps("namehash").keys();
System.out.println(s);//[a, b, c, d]
//提取所有的值
List values = redisTemplate.boundHashOps("namehash").values();
System.out.println(values);//[唐僧, 悟空, 八戒, 沙僧]
//根据KEY提取值
String str = (String) redisTemplate.boundHashOps("namehash").get("b");
System.out.println(str);//悟空
}
//根据KEY移除值
@Test
public void removeHashByKey() {
redisTemplate.boundHashOps("namehash").delete("c");
}
}
Spring Data Redis —— 快速入门的更多相关文章
- Spring Data JPA —— 快速入门
一.概述 JPA : Java Persistence API, Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring D ...
- Spring Data Solr —— 快速入门
Solr是基于Lucene(全文检索引擎)开发,它是一个独立系统,运行在Tomcat或Jetty(solr6以上集成了jetty,无需再部署到servlet容器上),但其原生中文的分词词功能不行,需要 ...
- Spring data JPA 快速入门
1需求 向客户中插入一条数据 如果使用Jpa框架可以不用先建表 可以使用框架生成表 2 实现步骤 a 创建工程 使用maven管理工程 <properties> ...
- Spring Data Redis入门示例:字符串操作(六)
Spring Data Redis对字符串的操作,封装在了ValueOperations和BoundValueOperations中,在集成好了SPD之后,在需要的地方引入: // 注入模板操作实例 ...
- Spring Data Redis入门示例:Hash操作(七)
将对象存为Redis中的hash类型,可以有两种方式,将每个对象实例作为一个hash进行存储,则实例的每个属性作为hash的field:同种类型的对象实例存储为一个hash,每个实例分配一个field ...
- Spring Data Redis入门示例:数据序列化 (四)
概述 RedisTemplate默认使用的是基于JDK的序列化器,所以存储在Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的: 可以看到,出现了乱码,在程序层面上,不会影响程序的运行, ...
- Spring Data Redis入门示例:基于Jedis及底层API (二)
使用底层API:RedisConnectionFactory和RedisConnection可以直接操作Redis,下面是一个简单的例子: ### Maven依赖 <properties> ...
- Spring Boot:快速入门教程
什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- Redis 快速入门
Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Red ...
随机推荐
- 分布式管理GIT命令总结(转载)
GIT是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本 ...
- 安卓Dialog对话框多次显示而闪退的解决办法
事情是这样子的,我在一个活动中自定义了一个AlertDialog,通过一个按钮点击即可弹出,而后来出现的情况是,第一次点击就没问题, 正常跳出,而第二次就直接程序闪退,然后报The specified ...
- python解析json数据
现在的API接口多为xml或json,json解析更简洁相对xml来说 以豆瓣的API接口为例,解析返回的json数据: https://api.douban.com/v2/book/1220562 ...
- 解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法
部分转载于: http://blog.csdn.net/georgejin/article/details/1706647 http://www.cnblogs.com/loveyunk/p/6089 ...
- Excel的合并解析
相关文件我放到如下链接: http://files.cnblogs.com/files/DreamDrive/Excel%E5%90%88%E5%B9%B6%E8%A7%A3%E6%9E%90.rar ...
- (转)X-Frame-Options响应头缺失漏洞
原文:https://blog.csdn.net/ljl890705/article/details/78071601 x-frame-options响应头缺失漏洞. 故名思意,就是返回的响应头信息中 ...
- Ruby:多线程队列(Queue)下载博客文章到本地
Ruby:多线程下载博客文章到本地的完整代码 #encoding:utf-8 require 'net/http' require 'thread' require 'open-uri' requir ...
- Bash控制结构
1. if-else语句 #!/bin/bash #if ... fi 语句: if [ $a != $b ] then echo "a != b" fi #if ... else ...
- Explain 执行计划 和 SQL优化
Explain 介绍 在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要 ...
- j2ee高级开发技术课程第五周
pplet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序. 如下所示是独立的 J ...