Spring-data-redis入门
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入门相关推荐
- Spring Data Redis入门示例:基于RedisTemplate (三)
使用底层API:RedisConnection操作Redis,需要对数据进行手动转换(String <---->byte),需要进行多数重复性工作,效率低下:org.springframe ...
- Spring Data Redis简单使用
项目常见问题思考 在项目中发现:对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪.那如何解决呢?我们通常的做法有两种:一种是数据缓存.一种是网页静态化.我们今天讨论第一种解决方案.将 ...
- Spring Boot Redis 入门
本文,我们基于 Spring Boot 2.X 版本. 1. 概述 在快速入门 Spring Boot 整合 Redis 之前,我们先来做个简单的了解.在 Spring 的生态中,我们使用 Sprin ...
- Spring Data Redis 实践
前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...
- 芋道 Spring Boot Redis 入门
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Redis/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速入门 3. 序列化 4. 项目实践 5 ...
- Spring Data Redis 正确使用姿势
课程简介 本课程主要讲解常规 Redis 的写法,Redis 和 Spring 的结合使用,即 Spring Data Redis,以及 Redis 在工作中的正确使用姿势,Redis 和 Sprin ...
- Spring data redis 异常
2019独角兽企业重金招聘Python工程师标准>>> spring 集成 spring-data-redis 版本: spring低版本 + spring-data-redis 高 ...
- 使用Spring Data Redis操作Redis(集群版)
说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...
- Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson
文章目录 官网 Jedis VS Lettuce Jedis Code POM依赖 配置文件 配置类 单元测试 Lettuce Code Redisson Code POM依赖 配置文件 配置类 单元 ...
- Spring Boot使用Spring Data Redis操作Redis(单机/集群)
说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...
最新文章
- JDK9为何要将String的底层实现由char[]改成了byte[]?
- ubuntu 16.04 如何获取root权限
- Webstrom卡顿问题解决
- CHIL-ORACLE-主外键约束(primary key / foreign key)
- CleanAOP实战系列--WPF中MVVM自动更新
- tf.clip_by_global_norm理解
- Sentinel圣天诺加密狗简单使用教程(Linux)
- [POJ2420]A Star not a Tree?(模拟退火)
- Mac OSX:Powerline风格的zsh配置
- PHP学习笔记(六)
- iOS Coding Style Guide 代码规范
- python open可以打开什么类型文件_Python打开文件open()的注意事项
- 大电流dcdc降压芯片20a_电源篇 - 降压电路(DCDC,非隔离
- 好听的计算机音乐大全,抖音里面的歌曲大全:100首超级好听的抖音歌曲(推荐)...
- 论文,污水流量检测系统
- Q-learning 算法工作原理
- 修改电脑配置的方法(被骗之后才学会的)
- 平庸前端码农之蜕变 — AST
- 猿创征文|OneOS 万耦启物TB6612驱动电机
- Rasa原文-编写对话数据
热门文章
- 攻防世界Reverse第九题no-strings-attached
- buu 丢失的MD5
- 【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
- Linux中如何安装MySQL详细步骤
- Chrome好用的插件
- solidity编码规范
- (46)分析 INT 0x2E 和 sysenter
- 2020-11-27(下标寻址和指针寻址)
- pwn学习总结(四)—— 堆基础知识(持续更新)
- 2015年蓝桥杯省赛题解