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的格式

 1 spring:
 2   redis:
 3     database: 0
 4     host: localhost
 5     port: 6379
 6     password:
 7     jedis:
 8       pool:
 9         max-active: 8
10         max-idle: 8
11         min-idle: 0

3、在test中SpringDataRedisDemoApplicationTests.java中测试相关api

  1 package com.cenobitor.spring_data_redis_demo;
  2
  3 import org.junit.Assert;
  4 import org.junit.Test;
  5 import org.junit.runner.RunWith;
  6 import org.springframework.beans.factory.annotation.Autowired;
  7 import org.springframework.boot.test.context.SpringBootTest;
  8 import org.springframework.data.redis.core.RedisTemplate;
  9 import org.springframework.test.context.junit4.SpringRunner;
 10 import java.util.List;
 11 import java.util.Set;
 12
 13 @RunWith(SpringRunner.class)
 14 @SpringBootTest
 15 public class SpringDataRedisDemoApplicationTests {
 16
 17     @Autowired
 18     private RedisTemplate redisTemplate;
 19
 20     @Test
 21     public void contextLoads() {
 22     }
 23
 24     /**
 25      * 值得操作
 26      */
 27     @Test
 28     public void setValue(){
 29         redisTemplate.boundValueOps("name").set("redis");
 30     }
 31
 32     @Test
 33     public void getValue(){
 34         String str = (String) redisTemplate.boundValueOps("name").get();
 35         System.out.println(str);
 36         Assert.assertNotNull(str);
 37     }
 38
 39     /**
 40      * set类型的操作
 41      */
 42     @Test
 43     public void setSetValue(){
 44         redisTemplate.boundSetOps("nameset").add("曹操");
 45         redisTemplate.boundSetOps("nameset").add("孙权");
 46         redisTemplate.boundSetOps("nameset").add("刘备");
 47     }
 48     @Test
 49     public void getSetValue(){
 50         Set nameset = redisTemplate.boundSetOps("nameset").members();
 51         System.out.println(nameset);//[刘备, 孙权, 曹操]
 52     }
 53     //删除集合中的某个元素
 54     @Test
 55     public void deleteSetValue(){
 56         Long remove = redisTemplate.boundSetOps("nameset").remove("刘备");
 57         System.out.println(remove);
 58         Assert.assertEquals("1",remove);
 59     }
 60     //删除整个集合
 61     @Test
 62     public void deleteSet(){
 63         Boolean nameset = redisTemplate.delete("nameset");
 64         Assert.assertEquals(true,nameset);
 65     }
 66
 67     /**
 68      * List类型操作
 69      */
 70     //右压栈:后添加的对象排在后边
 71     @Test
 72     public void setListValue1(){
 73         redisTemplate.boundListOps("namelist1").rightPush("刘备");
 74         redisTemplate.boundListOps("namelist1").rightPush("关羽");
 75         redisTemplate.boundListOps("namelist1").rightPush("张飞");
 76     }
 77     @Test
 78     public void getListValue1(){
 79         List list = redisTemplate.boundListOps("namelist1").range(0, -1);
 80         System.out.println(list);//[刘备, 关羽, 张飞]
 81     }
 82     //左压栈:后添加的对象排在前边
 83     @Test
 84     public void setListValue2(){
 85         redisTemplate.boundListOps("namelist2").leftPush("刘备");
 86         redisTemplate.boundListOps("namelist2").leftPush("关羽");
 87         redisTemplate.boundListOps("namelist2").leftPush("张飞");
 88     }
 89     @Test
 90     public void getListValue2(){
 91         List list = redisTemplate.boundListOps("namelist2").range(0, -1);
 92         System.out.println(list);//[张飞, 关羽, 刘备]
 93     }
 94     //查询集合某个元素
 95     @Test
 96     public void searchListByIndex(){
 97         String s = (String) redisTemplate.boundListOps("namelist1").index(1);
 98         System.out.println(s);//关羽
 99     }
100     //移除集合某个元素
101     @Test
102     public void removeListByIndex(){
103         redisTemplate.boundListOps("namelist1").remove(1, "关羽");
104     }
105
106     /**
107      * Hash类型操作
108      */
109     @Test
110     public void setHashValue(){
111         redisTemplate.boundHashOps("namehash").put("a", "唐僧");
112         redisTemplate.boundHashOps("namehash").put("b", "悟空");
113         redisTemplate.boundHashOps("namehash").put("c", "八戒");
114         redisTemplate.boundHashOps("namehash").put("d", "沙僧");
115     }
116     @Test
117     public void getHash(){
118         //提取所有的KEY
119         Set s = redisTemplate.boundHashOps("namehash").keys();
120         System.out.println(s);//[a, b, c, d]
121         //提取所有的值
122         List values = redisTemplate.boundHashOps("namehash").values();
123         System.out.println(values);//[唐僧, 悟空, 八戒, 沙僧]
124         //根据KEY提取值
125         String str = (String) redisTemplate.boundHashOps("namehash").get("b");
126         System.out.println(str);//悟空
127     }
128     //根据KEY移除值
129     @Test
130     public void removeHashByKey() {
131         redisTemplate.boundHashOps("namehash").delete("c");
132     }
133 }

原文地址:https://www.cnblogs.com/gdwkong/p/8990045.html

时间: 2024-08-08 14:28:33

Spring Data Redis —— 快速入门的相关文章

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

概述 RedisTemplate默认使用的是基于JDK的序列化器,所以存储在Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的: 可以看到,出现了乱码,在程序层面上,不会影响程序的运行,但当出现数据错误,对数据进行排查时,就无从下手了. 序列化器 在Spring Data Redis中,用户自定义类型和存储数据之间的转换(反之亦然)由org.springframework.data.redis.serializer包下的类进行处理. 这个包包含两种类型的序列化程序,它们负责序列化过

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

Spring Data Redis对字符串的操作,封装在了ValueOperations和BoundValueOperations中,在集成好了SPD之后,在需要的地方引入: // 注入模板操作实例 @Autowired private RedisTemplate template; // 从模板中取出对应的操作类实例 @Resource(name = "redisTemplate") private ValueOperations valueOps; 由于存储在Redis中的键和值通

Redis快速入门及实现

redis的概念 (1)Redis的优点 以下是Redis的一些优点. 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作. 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等.这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决. 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Red

Spring Data Redis 让 NoSQL 快如闪电(2)

[编者按]本文作者为 Xinyu Liu,文章的第一部分重点概述了 Redis 方方面面的特性.在第二部分,将介绍详细的用例.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论用例的简繁,Redis 都能帮助用户优化性能.处理能力和延迟,让常规 Java 企业版技术栈望而却步. 1. 全局唯一增量计数器 我们先从一个相对简单的用例开始吧:一个增量计数器,可显示某网

Redis 快速入门

Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Redis与Spring 的整合 .来让读者对它有一个初步的了解.下一章再通过介绍配置文件来搭建Redis的主从模式和集群模式(配置大于编程,先从简单的编程入手). 效果图: 需求:对商品类目进行Redis缓存处理 技术:Redis,Spring,SpringMVC,Mybatis,EasyUI 说明:E

《Spring Data JPA从入门到精通》内容简介、前言

内容简介 本书以Spring Boot为技术基础,从入门到精通,由浅入深地介绍Spring Data JPA的使用.有语法,有实践,有原理剖析. 本书分为12章,内容包括整体认识JPA.JPA基础查询方法.定义查询方法.注解式查询方法.@Entity实例里面常用注解详解.JpaRepository扩展详解.JPA的MVC扩展REST支持.DataSource的配置.乐观锁.SpEL表达式在Spring Data里面的应用.Spring Data Redis实现cacheable的实践.Intel

Spring REST Template 快速入门

Spring REST Template 快速入门 本篇将使用Spring Boot发布REST Service,使用Spring REST Template来调用服务 本篇代码均已上传到GITHUB,<https://github.com/IloveZiHan/restfultemplate.git> 介绍 我们之前都使用过HttpClient来发送HTTP请求,但我们很多时间都需要将HttpClient请求或者响应的数据转换为Java对象,HttpClient需要我们自己手动来解析.我们今

Redis快速入门:初识Redis

[IT168 专稿]在之前的文章中介绍了<Redis快速入门:选择Key-Value Store>,今天给大家介绍Redis的入门知识.Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持. 1.数据类型 作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系.但是,除了常规的数值或字符串,Redis的键值还

Spring Data Redis学习

本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 1.新功能 1.1.Spring Data Redis 1.8 新特性 1.2.Spring Data Redis 1.7 新特性 1.3.Spring Data Redis 1.6 新特性 1.4.Spring Data Redis 1.5 新特性 介绍 2.为什么选择Spring Data Redis? 3.要