环境要求: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 —— 快速入门的更多相关文章

  1. Spring Data JPA —— 快速入门

    一.概述 JPA : Java Persistence API, Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. Spring D ...

  2. Spring Data Solr —— 快速入门

    Solr是基于Lucene(全文检索引擎)开发,它是一个独立系统,运行在Tomcat或Jetty(solr6以上集成了jetty,无需再部署到servlet容器上),但其原生中文的分词词功能不行,需要 ...

  3. Spring data JPA 快速入门

    1需求 ​ 向客户中插入一条数据 ​ 如果使用Jpa框架可以不用先建表 可以使用框架生成表 ​ 2 实现步骤 ​ a 创建工程 使用maven管理工程 <properties>       ...

  4. Spring Data Redis入门示例:字符串操作(六)

    Spring Data Redis对字符串的操作,封装在了ValueOperations和BoundValueOperations中,在集成好了SPD之后,在需要的地方引入: // 注入模板操作实例 ...

  5. Spring Data Redis入门示例:Hash操作(七)

    将对象存为Redis中的hash类型,可以有两种方式,将每个对象实例作为一个hash进行存储,则实例的每个属性作为hash的field:同种类型的对象实例存储为一个hash,每个实例分配一个field ...

  6. Spring Data Redis入门示例:数据序列化 (四)

    概述 RedisTemplate默认使用的是基于JDK的序列化器,所以存储在Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的: 可以看到,出现了乱码,在程序层面上,不会影响程序的运行, ...

  7. Spring Data Redis入门示例:基于Jedis及底层API (二)

    使用底层API:RedisConnectionFactory和RedisConnection可以直接操作Redis,下面是一个简单的例子: ### Maven依赖 <properties> ...

  8. Spring Boot:快速入门教程

    什么是Spring Boot? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  9. Redis 快速入门

    Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Red ...

随机推荐

  1. python常用代码片段

    目录 Python3常用 文件处理 json处理 log日志 argparse使用 INIparser Python3常用 文件处理 class BaseMethod: @staticmethod d ...

  2. 堆排序(大顶堆、小顶堆)----C语言

    堆排序 之前的随笔写了栈(顺序栈.链式栈).队列(循环队列.链式队列).链表.二叉树,这次随笔来写堆 1.什么是堆? 堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被 ...

  3. 我的AI之路 —— OCR文字识别快速体验版

    OCR的全称是Optical Character Recoginition,光学字符识别技术.目前应用于各个领域方向,甚至这些应用就在我们的身边,比如身份证的识别.交通路牌的识别.车牌的自动识别等等. ...

  4. svn重新安装后报You need to upgrade the working copy first错误

    问题来源 最近重新安装了操作系统,安装了一个最新版的svn,提交代码的时候报了一个错误:You need to upgrade the working copy first,!网上找了很多解决办法,都 ...

  5. oracle安装完成之后,执行sqlplus命令,提示:bash: sqlplus: command not found...

    1.安装完oracle后,用终端登录,因为不是直接用oracle用户登录的,所以我就执行$ su oracle切换成oracle用户之后,执行"echo $ORACLE_HOME" ...

  6. 群辉6.1.7安装scrapy框架执行爬虫

    只针对会linux命令,会python的伙伴, 使用环境为: 群辉ds3615xs 6.1.7 python3.5 最近使用scrapy开发了一个小爬虫,因为很穷没有服务器可已部署. 所以打起了我那台 ...

  7. Docker仓库(四)

    一.什么是仓库 仓库就是集中存放镜像的地方,分为公共仓库和私有仓库,一个容易混淆的概念是注册服务器,实际上注册服务器是存放仓库的具体服务器,一个注册服务器可以有多个仓库,而每个仓库下面有多个镜像 二. ...

  8. Ubuntu 14.04TLS Nginx搭建静态文件服务器

    Nginx搭建静态文件服务器 [官方教程]https://www.nginx.com/resources/admin-guide/serving-static-content/ 打开Nginx的配置文 ...

  9. Python全局解释器锁 -- GIL

    首先强调背景: 1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能 ...

  10. linux TOP命令各参数详解【转载】

    实时监控或查看系统资源使用情况的工具——TOP top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法: ( ...