环境要求: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. C/C++掌握技能(一)

    1.在编译器中输入代码并将其保存为.cpp文件(C语言的文件扩展名.c,但为了使用C++中的一些好用的特性,请把文件扩展名改为C++的.cpp)2.等价头文件:#include<stdio.h& ...

  2. 异步三部曲之promise

    概述 这是我看你不知道的JavaScript(中卷)的读书笔记,供以后开发时参考,相信对其他人也有用. 例子 首先来看一个例子,如果我们要异步获取x和y,然后把他们打印出来,那么用回调可以编写代码如下 ...

  3. python学习笔记15-字符串 lsit set truple之间的相互转换

    import string #字符串转list str = 'abcde' list = list(str) #list转字符串 str_convert = ''.join(list) #字符串转se ...

  4. iOS-xcconfig环境变量那些事(配置环境的配置)

    前言 在配置宏定义参数时,会发现一个问题,在需要临时修改或者测试一些数据时,修改宏,如果不修改,就多写一个,注释掉原来的,然后测试后,再换回来,当然了,如果一两个宏,可以这样,但是,如果每次改的比较多 ...

  5. Pycharm配置autopep8:自动调整代码为PEP8风格

    关于PEP 8 PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性. 官网地址:http ...

  6. 插入排序(java)

    这星期java老师布置的作业就是实现几种常见的排序算法,由于数据结构学了丢得差不多了,今天晚上搞了一晚上才搞出来插入排序的三种算法. 首先说个与题目不搭的话,今天写

  7. Runtime 全方位装逼指南

    Runtime是什么?见名知意,其概念无非就是“因为 Objective-C 是一门动态语言,所以它需要一个运行时系统……这就是 Runtime 系统”云云.对博主这种菜鸟而言,Runtime 在实际 ...

  8. Python标准库 -- UUID模块(生成唯一标识)

    UUID是什么: UUID: 通用唯一标识符 ( Universally Unique Identifier ),对于所有的UUID它可以保证在空间和时间上的唯一性,也称为GUID,全称为: UUID ...

  9. (转)CentOS7安装Nginx1.14.2

    原文:https://blog.csdn.net/zhyfyz/article/details/84957381 https://blog.csdn.net/q85795362/article/det ...

  10. ASP.NET Core 1.0 中使用 Log 日志配置

    https://github.com/aspnet/Logging https://docs.asp.net/en/latest/fundamentals/logging.html ASP.NET C ...