背景:
当redis里面需要存储 “key-字符串,value-对象” 时,是不能直接存对象,而是需要将序列化后或转换为JSON后的对象存进redis。
redis没有实现内部序列化对象的功能,所以需要自己提前序列化对象及转换为Json对象。
序列化介绍:
序列化的方法有很多,比如java原生序列化(需要实现Serializable接口)、json序列化、protobuff序列化。
protobuff序列化:告诉我对象的class,内部有schema来描述你的class是什么结构,class必须有get/set方法这种标准的类,而不是string等类
关于Serializable和protobuff序列化的介绍在我的上一篇文章:点击打开链接
由于之前对redis有很大兴趣,在使用redis当做数据缓存;所以趁着这些天的时间,自己写了一个将数据插入redis的demo;这里仅供自己后期学习笔记参考,若有不对的地方,请轻拍砖!
第一种:将数据对象转换为JSONString存入redis
1.首先pom文件导入
<!-- Jedis connection redis-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- protostuff序列化依赖 -->
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>1.0.8</version>
</dependency>
<dependency>
<groupId>com.dyuproject.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>1.0.8</version>
</dependency>
2.redis.properties文件配置及 spring文件配置
redis.pool.maxTotal=1000
redis.pool.maxIdle=200
redis.pool.maxWaitMillis=2000
redis.pool.testOnBorrow=true
jedis.host=127.0.0.1
jedis.port=6379
<context:property-placeholder location="classpath:redis.properties" file-encoding="utf-8" ignore-unresolvable="true"></context:property-placeholder>
<!-- Jedis config-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.pool.maxTotal}"/>
<property name="maxIdle" value="${redis.pool.maxIdle}"/>
<property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/>
<property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg ref="jedisPoolConfig"/>
<constructor-arg value="${jedis.host}" type="java.lang.String"/>
<constructor-arg type="int" value="${jedis.port}"/>
</bean>
3.写一个RedisUtil来获取和释放redis资源,得到Jedis对象