redis系列化数据测试(JDK,JSON,Hash)
内容描述:
-
非关系型数据库简介
-
了解redis数据库
-
简单了解配置文件
-
不同的系列化方式存储数据都有哪些变化
1、什么是非关系型数据库
非关系型数据库简称NoSql:
(NoSQL = Not Only SQL)意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库
为什么要使用非关系型数据库,随着互联网的兴起,用户量日益增加,对于关系型数据库来说,没有办法达到那么高的并发量,所有NoSql的数据诞生就是为了解决大规模数据集合多重数据种类带来
的挑战,尤其是大数据应用难题2、了解redis数据库
redis使用C语言开发出来的一个开源高性能键值对(key-value),读写速度超快的数据库,可以将存储
在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能并且他提供了不同键值对数据类
型来存储数据,目前有五种数据类型:
1、字符串类型 String
2、散列类型 Hash
3、列表类型 List
4、集合类型 Set
5、有序集合类型 ZSet
3、简单了解配置文件
我这里使用的是maven项目,因为只是测试数据所以只需导jar包就好了
因为都有注释,我就不再多说
pom文件需要部署的jar包
<dependencies> <!-- 提供了一整套用于实现对象池化的框架,以及若干各具特色的对象池实现,可以有效地减少处理对象池化时的工作量 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.0</version> </dependency> <!-- redis客户端服务 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency> <!-- 是处理IO的工具类包,对java.io进行扩展,提供了更加方便的IO操作。 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <!-- 单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- 为Spring 核心提供了大量扩展 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.2</version> </dependency> <!-- 数据转json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency> <!-- 对JUNIT等测试框架的简单封装 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.4.1.RELEASE</version> </dependency> </dependencies>
redis的配置
<!-- 序列化方式String --> <bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean> <!-- 序列化方式JDK redis默认使用的是jdk的序列化方式--> <bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"></bean> <!-- jackson 的序列化方式 --> <bean id="jackson2JsonRedisSerializer" class="org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer"> <constructor-arg value="java.lang.Object"></constructor-arg> </bean> <!-- 想要操作redis的CURD 就必须要使用redisTemplate来操作,所以首先必须要声明reidsTemplate这个类 --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <!-- 设置连接数据库属性 --> <property name="connectionFactory" ref="connectionFactory"></property> <property name="keySerializer" ref="stringRedisSerializer"></property> <property name="valueSerializer" ref="jackson2JsonRedisSerializer"></property> <property name="hashKeySerializer" ref="stringRedisSerializer"></property> <property name="hashValueSerializer" ref="stringRedisSerializer"></property> </bean> <!-- 声明连接一个工厂 --> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="192.168.218.128"></property> <property name="port" value="6379"></property> </bean>
4、redis数据测试
当所有的配置都配置好了以后就可以进行数据测试了
我是创建了一个User对象给了一些属性,这里大家随意,主要是测试数据
创建测试类,在类型的上方需要名声@RunWith和@ContextConfiguration这两个注解作用:通俗的讲就是在junit启动时能够去加载redis.xml配置文件
测试数据的时候都是一样的,只需要去redis.xml系列化的方式就可以了
添加数据的时候我调用了我的工具类这里的话大家可以不需要工具类
只要有数据就可以了
总结
经过三次测试:
采用jdk的序列化方式
保存数据共五万条
所耗时间23249毫秒
采用JSON的序列化方式
保存数据共五万条
所耗时间23798毫秒
采用Hash的序列化方式
保存数据共五万条
所耗时间21732毫秒
从时间上来看
hash存储数据速度最快,json存储数据速度慢 ,jdk存储数据速度中等
但是我只是简单的测试了一下,测试的数据并不是很准确,和电脑各个方面也都关系,大家可以自己动手写一下,主要是了解redis数据系列化方式