一个月没写过博客了,一直想记录一下之前学习的Redis的有关知识,但是因为四月太过于慵懒和忙碌,所以一直没有什么机会,今天就来讲讲,如何使用Spring当中的Spring-data-redis去与Redis这个Nosql数据库集成吧。

  首先先简单讲讲我理解的Nosql数据库吧,如果存在错误,还请一定联系本人指出,因为自己也是摸索阶段当中,希望能有人多多进行交流。所谓的Nosql中文全称为:非关系型数据库,即它不像Mysql那样关系型数据库,它存储的内容之间,可以是没有关联关系的。Mysql一张表存储的东西,就必须是属于这一张表的实例,且结构和字段是在表设计之初就设定好的,而Nosql的“表”(其实Nosql当中没有表这个概念)是可以存储各种各样的东西的,可以是一个链表,可以是一个hashmap,或者是其他形式的集合。而在Nosql当中的Redis,是一种基于内存的Nosql数据库,即其在启动的时候,可以把所有redis存储的东西都加载到内存当中,它是以Key-value的形式进行存储的,并且查询也是通过其Key进行的。它解决了大规模数据集合多重数据种类带来的挑战,基于内存的Nosql在查询方面相比传统的关系型数据库,更是它的一大优势。

  对Redis大概有了一定的了解和定位之后,接下来我们进入正题,在本文当中,主要讲解的是通过Spring-Date-Redis(SDR)来对Redis进行一些增删改查的操作,其中包括普通的字符串的增删改查,以及自定义对象的增删改查,即基于Spring的Redis Nosql数据库的Dao层实现是本文要讲解的核心内容

  在讲解之前,首先我们要搭建好我们的工程,在这里与之前不同,本人这次采用的是maven工程进行工程搭建,在maven工程里头,可以通过对工程当中的pom.xml引入依赖,而对所依赖的jar包进行注入,包括自动从maven的主仓库下载到本地仓库当中,并且自动在工程当中建立好相应jar包的依赖路径,开发者不在需要关注所使用的jar在哪下载,并且有没有下载完全等问题,十分便利。这里不再对maven工程的使用进行赘述了,如果有不会的同学,可以联系本人或者自行查阅java maven工程的使用,再或者通过直接手动下载所需要的jar包依赖,手动引入jar建立路径的方式进行工程搭建也可以。而使用的测试框架,是junit 4.12进行的,该框架可对无参数的函数进行单元测试,这里也不再对该框架进行过多的介绍了,不了解的同学,可以自行查阅。由于本人是基于maven工程的,这里直接上依赖的pom.xml了。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>wellhold.bjtu</groupId><artifactId>Spring_redis</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>Spring_redis</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.2.5.RELEASE</spring.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</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-context</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-aop</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-tx</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-web</artifactId><version>${spring.version}</version></dependency><!--spring单元测试依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><!-- Redis 相关依赖 --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.6.1.RELEASE</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency><!-- annotation依赖 --><dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.2</version></dependency></dependencies>
</project>

配置好依赖的jar包之后,Redis和mysql一样,也需要对数据库的相关参数进行配置,包括连接的主机地址,端口号等参数。我们通过编写一个.properties文件来进行相关参数的配置,redis.properties如下:

#redis中心
#绑定的主机地址
redis.host=127.0.0.1
#指定Redis监听端口,默认端口为6379
redis.port=6379
#授权密码(可以不使用)
redis.password=bjtu
#最大空闲数:空闲链接数大于maxIdle时,将进行回收
redis.maxIdle=100
#最大连接数:能够同时建立的“最大链接个数”
redis.maxTotal=200
#最大等待时间:单位ms
redis.maxWait=1000
#使用连接时,检测连接是否成功
redis.testOnBorrow=false
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
redis.timeout=10000

之后就是对我们的Spring进行配置了,通过我们的beans.xml进行配置,如下:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"><!-- 自动扫描注解的bean --><context:component-scan base-package="wellhold.bjtu.Spring_redis" /><context:annotation-config /><!-- 读取redis.properties --><context:property-placeholder location="classpath:redis.properties"/>  <!-- jedis连接池配置 --><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /><property name="maxWaitMillis" value="${redis.maxWait}" /><property name="testOnBorrow" value="${redis.testOnBorrow}" /><property name="maxTotal" value="${redis.maxTotal}" /> <property name="blockWhenExhausted" value="true" /> </bean> <!-- jedis连接工程的配置 --><bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}" /><property name="port" value="${redis.port}" /><property name="poolConfig" ref="jedisPoolConfig" /> <property name="password" value="${redis.password}" /><property name="usePool" value="true"/> <property name="timeout" value="${redis.timeout}"></property></bean> <!-- redisTemplate配置 --><bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">   <property name="connectionFactory"   ref="jedisConnectionFactory" />  <property name="keySerializer">   <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />   </property>      <property name="valueSerializer">   <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />   </property>   <property name="hashKeySerializer">     <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>     </property>   <property name="hashValueSerializer">   <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>     </property> </bean> </beans>

简单的说一下在这个beans.xml当中的一些内容,首先,什么是jedis?从名字可以看出来jedis可以看成是java to redis的简写,是一个别人封装好的java与redis联用的jar包,可以利用别人封装好的jedis直接与redis联通,而jedis pool即是通过连接池的方式进行连接,在这里可以简单的看做是C3P0与Mysql之间的关系。而Spring-data-Redis,则是在Jedis再上一层的封装,这一层封装使得Spring可以直接与Jedis集成,且可通过Spring里头的RedisTemplate对象对Redis进行操作,使得用户操作起来更加简便。而在Serializer则是序列化类,是可以讲对象进行序列化的工具类,所谓的序列化就是将一个对象转换为二进制的数据流,这样就可以进行传输,或者保存到文件中。如果一个类的对象要想实现序列化,就必须实现serializable接口,在此接口中没有任何的方法,此接口只是作为一个标识,表示本类的对象具备了序列化的能力而已。

  完成工程各个框架和组件的配置之后,我们开始进行逻辑业务的实现。

转载于:https://www.cnblogs.com/WellHold/p/6796298.html

Spring:与Redis的集成相关推荐

  1. RedisUtil - Redis功能介绍,五种数据类型的使用,Spring和Redis的集成

    RedisUtil 介绍  最全的Java操作Redis的工具类,封装了对Redis五种基本类型的各种操作,力求符合Redis的原生操作,使用StringRedisTemplate实现! 快速导航: ...

  2. 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo

    前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...

  3. 搞懂分布式技术14:Spring Boot使用注解集成Redis缓存

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a724888/article/details/80785403 为了提高性能,减少数据库的压力,使用 ...

  4. 在spring MVC项目中集成Spring session redis (使用spring session框架,redis作为存储缓存)...

    2019独角兽企业重金招聘Python工程师标准>>> 1.为项目增加以来  pom.xml中使用 <!-- spring session 单点登录 --> //本项目使 ...

  5. Spring Boot 极简集成 Shiro

    点击关注公众号,Java干货及时送达 1. 前言 Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理. Shiro有三大核心组件: Subject: ...

  6. 使用Spring操作Redis的key-value数据

    前言 最近工作一直忙的不可开交,小Alan已经很久没有和大家分享知识了,在深圳待了两年多,依然感觉自己还是个小菜鸟,工作中还是会遇到很多自己在短期内无法搞定的事情,每当这个时候总是会感觉到很沮丧,就会 ...

  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. Spring Boot——Spring Session Redis整合Spring Security时错误【RedisConnectionFactory is required】解决方案

    问题描述 异常栈栈底 Caused by: java.lang.IllegalStateException: RedisConnectionFactory is requiredat org.spri ...

最新文章

  1. android Button源码分析
  2. NYOJ 118 修路方案(次小生成树)
  3. php怎么实现md5加密,php如何进行md5加密
  4. rxjs里subscribe和tap的区别
  5. apache mysql php 安装配置_Windows下Apache,MySql,PHP安装配置
  6. C语言——二维数组转置
  7. 一加9 Pro高清渲染图曝光:后置四摄加持哈苏logo真香
  8. Pascal 语言中的关键字及保留字
  9. Python第三方库使用——splinter
  10. eslint php,eslint配置
  11. 卡诺模型(KANO Model)
  12. 深度学习之epoch
  13. AlexNet_tensorflow2.1_实现狼狗分类
  14. centos 安装安全狗
  15. 【论文阅读32】《Texture Defragmentation for Photo-Reconstructed 3D Models》
  16. 通过淘宝接口获取手机号码归属地
  17. Jmeter阶梯压测聚合报告分阶梯汇总显示
  18. FireMonkey开发: 图片缩放
  19. Python第一阶段学习 day10
  20. 大数据笔试真题集锦---第十一章:Sqoop面试题

热门文章

  1. 2021年高考理综单科成绩查询,2021年高考总分是多少 2021年高考各科满分多少分...
  2. 的translate插件_知否 ?知否 ?React插件了解一下!
  3. raid5坏了一块盘怎么办_机械硬盘的坏道处理——屏蔽之
  4. Linux ct获取本机ip,linux ip命令
  5. java map 优化_java.util.map和java.util.set的优化实现?
  6. android 多级分组,android 二级菜单(类似QQ分组)
  7. java遍历数组练习(for循环、foreach)
  8. STL中“大”、“小”和“相等”的概念
  9. linux内核实现ipsec,IP XFRM配置示例:利用linux kernel自带的IPSec实现,手动配置IPSec...
  10. 如果表不存在则创建_当创建一个文件的时候,操作系统发生了什么