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 ...
随机推荐
- @JsonInclude、@JsonFormat、@DateTimeFormat注解的使用
@JsonInclude(value=Include.NON_NULL) :用在实体类的方法类的头上 作用是实体类的参数查询到的为null的不显示 @DateTimeFormat:用于接收 前端传的 ...
- Spring中使用StandardServletMultipartResolver进行文件上传
从Spring3.1开始,Spring提供了两个MultipartResolver的实现用于处理multipart请求,分别是:CommonsMultipartResolver和StandardSer ...
- css 的 conic-gradient 学习
偶然间在微信公众号奇舞周刊上看到了这篇文章<CSS Painting API>,算是对 conic-gradient的初次见面. 后来有空的时候,百度搜了一下,看了这篇文章<CSS神 ...
- SQLAlchemy介绍和基本使用
pymysql:pymysql是用Python来操作mysql的包,因此通过pip来安装,命令如下:pip3 install pymysql.如果您用的是Python 3,请安装pymysql 豆瓣源 ...
- redis常用命令(一)
一.redis常见的数据操作命令 http://redisdoc.com/ 二.键(key) keys *: 查询所有的key. exists key:判断某个key是否存在. move key db ...
- Java异常处理设计(一)
很多次的经验教训,让我不得不重视异常处理.经常遇到的问题如下:1)日志不准确,错误原因难以查明!!2)日志量太大,查找麻烦!!3)哪里需要记录日志,哪里不用记录日志?往往随心所欲!!分析以上问题,深入 ...
- odoo开发笔记 -- odoo仪表板集成hightcharts
highcharts图表插件初探 http://www.cnblogs.com/liubei/p/highchartsOption.html
- Postgresql客户端不能远程连接数据库服务器 org.postgresql.util.PSQLException:
Postgresql安装完成之后,默认情况下是不允许远程客户端直接连接的,并且默认的监听配置文件里边,监听的服务器地址是127.0.0.1即:localhost 报如下错误: org.postgres ...
- Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包
可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...
- 详解C#泛型(二)
一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { Type generi ...