Srping Data Redis 四:Srping Data Redis 入门
来源:互联网 发布:阿里云别名解析 编辑:程序博客网 时间:2024/06/05 10:07
一、Spring Data Redis
Spring Data Redis 提供Jedis,Jredis,rjc等客户端的封装,可以根据需求更换换客服端,使业务代码比较稳定性。 以及提供对连接池管理 (timeout、maxActive、maxIdle等参数),org.springframework.data.redis.connection包中的RedisConnection和RedisConnectionFactory类来获取Redis连接,Spring Data Redis 提供RedisTemplate是对RedisConnection进行封装,提供了连接管理,序列化等功能,它对Redis的交互进行了更高层次的抽象,对调用做了封装,省去了建立连接,释放连接等繁琐代码。
二、RedisTemplate
Spring Data Redis 像hibernate等一样提供了模板,Spring Data Redis提供了RedisTemplate和StringRedisTemplate这两种模板,我们可以通过Spring容器进行管理:
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean> <bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"></property> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/> </property> </bean>
Jedis的客户端API接受的数据类型为String和byte。我们有时保存对象时,需要转换为byte或者String。
1、RedisSerializer
Org.springframework.data.redis.serializer包下提供了几种系列化
JdkSerializationRedisSerializer:是JDK自带的系列化,通过对实体类ObjectInputStream/ObjectOutputStream进行序列化操作。实体类必须实现Serializable不然会报错。
Jackson2JsonRedisSerializer:是将实体类转换为JSON在进行系列化。
OxmSerializer:是将实体类转换为XML在进行系列化。
StringRedisSerializer:string.getBytes(charset)通过String提供的方法获取二进制数组。
2、StringRedisTemplate
StringRedisTemplate extends RedisTemplate<String, String>,默认使用StringRedisSerializer对value进行系列化。
3、RedisTemplate
提供了对key、value、hashKey、hashValue进行系列化方式:
private RedisSerializer keySerializer = null;
private RedisSerializer valueSerializer = null;
private RedisSerializer hashKeySerializer = null;
private RedisSerializer hashValueSerializer = null;
默认使用 JdkSerializationRedisSerializer对对象进行系列化。
总结:
JSON或者XML转换为字符串进行存储由StringRedisTemplate来操作。
有些不转换字符串的对象需要系列化进行存储由RedisTemplate来操作 。
三、API概述
Spring Data Redis 提供RedisTemplate操作Redis,能方便我们开发,RedisTemplate提供的操作视图(从Redis命令参考分组),提供丰富的,泛型接口的工作对key类型(通过按key类型绑定接口)操作。还可以对key设置过期时间。
1、区别
Key类型操作:可以在一个连接上可以同时操作多个key。
key绑定操作:在一个连接上绑定具体的key,只能对这个key进行操作。
通过例子能理解区别在哪里:
2、接口说明
Org.springframework.data.redis.core 包中定义了接口以及对接口的实现。
Key类型操作提供的接口:
ValueOperations Redis String/Value操作
ListOperations Redis List 操作
SetOperations Redis Set 操作
ZSetOperations Redis Sort Set 操作
HashOperations Redis Hash 操作
key绑定操作提供的接口:
BoundValueOperations Redis String/Value key绑定操作
BoundListOperations Redis List key绑定操作
BoundSetOperations Redis Set key 绑定操作
BoundZSetOperations Redis Sort Set key绑定操作
BoundHashOperations Redis Hash key 绑定操作
3、key设置过期时间
可以给key设置过期时间,时间到了自动删除key,这样对不需要存储太长的数据进行清除,以免占用内存空间。设置key过期有两种方式:
1、set(K key, V value, final longtimeout, final TimeUnit unit)
2、expire(K key, final long timeout, final TimeUnit unit)
五、简单例子
redis.host=192.168.1.100 redis.port=6379
<!-- 获取配置资源 --><context:property-placeholder location="classpath:redis.properties" /> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:host-name="${redis.host}" p:port="${redis.port}" /> <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory" /> </bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="jedisConnectionFactory"></property> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/> </property> </bean>
@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Autowiredprivate RedisTemplate redisTemplate;@Overridepublic void set(String key, String value) {stringRedisTemplate.opsForValue().set(key, value);}@SuppressWarnings("unchecked")@Overridepublic void setObject(Object key, Object value) {redisTemplate.opsForValue().set(key, value);}
@Test public void testAdd() { User user=new User(); user.setCzry("name"); user.setMm("mm"); redisStringDao.set("test1", JSONObject.toJSONString(user)); redisStringDao.setObject("test2", user); }
- Srping Data Redis 四:Srping Data Redis 入门
- Srping Data Jpa条件查询封装
- srping
- srping aop入门2
- redis:spring-data-redis
- 快速入门spring-data-redis,轻松上手
- Redis入门很简单之八【Spring Data Redis初探】
- Redis入门很简单之八【Spring Data Redis初探】
- Redis入门很简单之八【Spring Data Redis初探】
- redis Jredis spring-data-redis
- spring data redis 操作redis
- Spring Data Redis (Redis Support)
- Spring Data Redis(Redis Transactions)
- Spring Data Redis(Redis Scripting)
- Spring Data Redis(Redis Cluster)
- Spring Data Redis(Redis Repositories)
- spring data redis 操作redis
- Srping定时器
- 提取关键短语tutorial笔记
- 如何成为数据分析师
- Consecutive Digits(hdu 2731)
- INV-MO-The material sourcing Process failed to create picking suggestions
- 准确率(precision)和召回率(recall)
- Srping Data Redis 四:Srping Data Redis 入门
- 入职感想
- 操作系统的优先读者和优先写着的读者/写着问题
- 在HDFS中合并文件
- 12.表单处理
- 解决Virtualbox的容量不够的问题
- 文章标题
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 获取map的key和value