1.简介

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:简单K-V操作
​
SetOperations:set类型数据操作
​
ZSetOperations:zset类型数据操作
​
HashOperations:针对map类型的数据操作
​
ListOperations:针对list类型的数据操作

2.入门小Demo

1.准备工作

(1)构建Maven工程

(2)引入Spring相关依赖、引入JUnit依赖

(3)引入Jedis和SpringDataRedis依赖

<properties><spring.version>4.2.4.RELEASE</spring.version></properties>
​<dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.8.1</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.7.2.RELEASE</version></dependency>
​<!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version></dependency></dependencies>

(4)在src/main/resources下创建properties文件夹,建立redis-config.properties

# Redis settings
# server IP
redis.host=127.0.0.1
# server port
redis.port=6379
# server pass
redis.pass=
# use dbIndex
redis.database=0
# 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例
redis.maxIdle=300
# 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间(毫秒),则直接抛出JedisConnectionException;
redis.maxWait=3000
# 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的
redis.testOnBorrow=true

(5)在src/main/resources下创建spring文件夹 ,创建applicationContext-redis.xml

<context:property-placeholder location="classpath*:properties/redis-config.properties" /><!-- redis 相关配置 --><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxIdle" value="${redis.maxIdle}" /><property name="maxWaitMillis" value="${redis.maxWait}" /><property name="testOnBorrow" value="${redis.testOnBorrow}" /></bean><bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/>
​<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"><property name="connectionFactory" ref="JedisConnectionFactory" /></bean>

2.值类型操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class TestValue {
​@Autowiredprivate RedisTemplate redisTemplate;
​/*** 存值*/@Testpublic void setValue(){redisTemplate.boundValueOps("name").set("redis");}
​/*** 取值*/@Testpublic void getValue(){System.out.println(redisTemplate.boundValueOps("name").get());}
​/*** 删除*/@Testpublic void delValue(){redisTemplate.delete("name");}
}

3.set

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class TestSet {
​@Autowiredprivate RedisTemplate redisTemplate;
​/*** 存值*/@Testpublic void setValue(){redisTemplate.boundSetOps("books").add("西游记");redisTemplate.boundSetOps("books").add("三国演义");redisTemplate.boundSetOps("books").add("红楼梦");redisTemplate.boundSetOps("books").add("水浒传");}
​/*** 取值* set类型为无序的,存取顺序不一致*/@Testpublic void getValue(){Set books = redisTemplate.boundSetOps("books").members();System.out.println(books); //[西游记, 水浒传, 红楼梦, 三国演义]}
​/*** 删除集合中的某个值*/@Testpublic void deleValue(){redisTemplate.boundSetOps("books").remove("西游记");}
​/*** 删除整个集合*/@Testpublic void deleAll(){redisTemplate.delete("books");}
}

4.List类型操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class TestList {@Autowiredprivate RedisTemplate redisTemplate;
​/*** 右压栈:后添加的对象排在后边*/@Testpublic void setValue() {redisTemplate.boundListOps("nameList").rightPush("刘备");redisTemplate.boundListOps("nameList").rightPush("关羽");redisTemplate.boundListOps("nameList").rightPush("张飞");}
​/*** 显示右压栈集合*/@Testpublic void getValue() {//range(long start,long end)//start表示开始的索引,end表示要遍历的长度List nameList = redisTemplate.boundListOps("nameList").range(0, 3);System.out.println(nameList);   //[刘备, 关羽, 赵飞]}
​/*** 左压栈:先添加的对象排在后边*/@Testpublic void setValue1() {redisTemplate.boundListOps("nameList1").leftPush("宋江");redisTemplate.boundListOps("nameList1").leftPush("武松");redisTemplate.boundListOps("nameList1").leftPush("鲁智深");}
​/*** 显示左压栈集合*/@Testpublic void getValue1() {List nameList = redisTemplate.boundListOps("nameList1").range(0, 3);System.out.println(nameList);   //[鲁智深, 武松, 宋江]}
​/*** 查询某个结果*/@Testpublic void getSerarchByIndex() {Object o = redisTemplate.boundListOps("nameList").index(1);System.out.println(o);  //关羽}
​/*** 移除集合中的某个元素*/@Testpublic void removeByIndex() {//remove(long i,Object value)//i表示要删除的元素个数,value表示要删除的元素//此处表示删除1个鲁智深redisTemplate.boundListOps("nameList1").remove(1, "鲁智深");}
}
​

5.Hash类型操作

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class TestHash {@Autowiredprivate RedisTemplate redisTemplate;
​/*** 存入值*/@Testpublic void setValue(){redisTemplate.boundHashOps("city").put("山西","太原");redisTemplate.boundHashOps("city").put("河北","石家庄");redisTemplate.boundHashOps("city").put("浙江","杭州");redisTemplate.boundHashOps("city").put("山东","青岛");redisTemplate.boundHashOps("city").put("内蒙古","呼和浩特");}
​/*** 获取所有的key*/@Testpublic void getKeys(){Set cityKey = redisTemplate.boundHashOps("city").keys();System.out.println(cityKey);}
​/*** 获取所有的value*/@Testpublic void getValues(){List cityValue = redisTemplate.boundHashOps("city").values();System.out.println(cityValue);}
​/*** 获取指定的value*/
​@Testpublic void getValue(){Object o = redisTemplate.boundHashOps("city").get("山西");System.out.println(o);}
​/*** 根据key移除value*/
​@Testpublic void delete(){redisTemplate.boundHashOps("city").delete("内蒙古");}
}
​

Spring-data-redis入门相关推荐

  1. Spring Data Redis入门示例:基于RedisTemplate (三)

    使用底层API:RedisConnection操作Redis,需要对数据进行手动转换(String <---->byte),需要进行多数重复性工作,效率低下:org.springframe ...

  2. Spring Data Redis简单使用

    项目常见问题思考 在项目中发现:对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪.那如何解决呢?我们通常的做法有两种:一种是数据缓存.一种是网页静态化.我们今天讨论第一种解决方案.将 ...

  3. Spring Boot Redis 入门

    本文,我们基于 Spring Boot 2.X 版本. 1. 概述 在快速入门 Spring Boot 整合 Redis 之前,我们先来做个简单的了解.在 Spring 的生态中,我们使用 Sprin ...

  4. Spring Data Redis 实践

    前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...

  5. 芋道 Spring Boot Redis 入门

    摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Redis/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速入门 3. 序列化 4. 项目实践 5 ...

  6. Spring Data Redis 正确使用姿势

    课程简介 本课程主要讲解常规 Redis 的写法,Redis 和 Spring 的结合使用,即 Spring Data Redis,以及 Redis 在工作中的正确使用姿势,Redis 和 Sprin ...

  7. Spring data redis 异常

    2019独角兽企业重金招聘Python工程师标准>>> spring 集成 spring-data-redis 版本: spring低版本 + spring-data-redis 高 ...

  8. 使用Spring Data Redis操作Redis(集群版)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  9. Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson

    文章目录 官网 Jedis VS Lettuce Jedis Code POM依赖 配置文件 配置类 单元测试 Lettuce Code Redisson Code POM依赖 配置文件 配置类 单元 ...

  10. Spring Boot使用Spring Data Redis操作Redis(单机/集群)

    说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...

最新文章

  1. JDK9为何要将String的底层实现由char[]改成了byte[]?
  2. ubuntu 16.04 如何获取root权限
  3. Webstrom卡顿问题解决
  4. CHIL-ORACLE-主外键约束(primary key / foreign key)
  5. CleanAOP实战系列--WPF中MVVM自动更新
  6. tf.clip_by_global_norm理解
  7. Sentinel圣天诺加密狗简单使用教程(Linux)
  8. [POJ2420]A Star not a Tree?(模拟退火)
  9. Mac OSX:Powerline风格的zsh配置
  10. PHP学习笔记(六)
  11. iOS Coding Style Guide 代码规范
  12. python open可以打开什么类型文件_Python打开文件open()的注意事项
  13. 大电流dcdc降压芯片20a_电源篇 - 降压电路(DCDC,非隔离
  14. 好听的计算机音乐大全,抖音里面的歌曲大全:100首超级好听的抖音歌曲(推荐)...
  15. 论文,污水流量检测系统
  16. Q-learning 算法工作原理
  17. 修改电脑配置的方法(被骗之后才学会的)
  18. 平庸前端码农之蜕变 — AST
  19. 猿创征文|OneOS 万耦启物TB6612驱动电机
  20. Rasa原文-编写对话数据

热门文章

  1. 攻防世界Reverse第九题no-strings-attached
  2. buu 丢失的MD5
  3. 【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
  4. Linux中如何安装MySQL详细步骤
  5. Chrome好用的插件
  6. solidity编码规范
  7. (46)分析 INT 0x2E 和 sysenter
  8. 2020-11-27(下标寻址和指针寻址)
  9. pwn学习总结(四)—— 堆基础知识(持续更新)
  10. 2015年蓝桥杯省赛题解