发表于: 2018-09-18 20:33:48
2 489
今天完成的事情:
主要是看redis和ssm项目的整合
了解redis序列化存储方式
spring-data-redis提供了多种serializer策略,sdr提供了4种内置的serializer:
JdkSerializationRedisSerializer:使用JDK的序列化手段(serializable接口,ObjectInputStrean,ObjectOutputStream),数据以字节流存储
StringRedisSerializer:字符串编码,数据以string存储
JacksonJsonRedisSerializer:json格式存储
OxmSerializer:xml格式存储
其中JdkSerializationRedisSerializer和StringRedisSerializer是最基础的序列化策略,其中“JacksonJsonRedisSerializer”与“OxmSerializer”都是基于stirng存储,因此它们是较为“高级”的序列化(最终还是使用string解析以及构建java对象)。
RedisTemplate中需要声明4种serializer,默认为“JdkSerializationRedisSerializer”:
1) keySerializer :对于普通K-V操作时,key采取的序列化策略
2) valueSerializer:value采取的序列化策略
3) hashKeySerializer: 在hash数据结构中,hash-key的序列化策略
4) hashValueSerializer:hash-value的序列化策略
在spring项目中redis序列化配置,我用的StringRedisSerializer 字符串编码,数据以string存储的形式:
<!--以下针对各种数据进行序列化方式的选择-->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashValueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
Redis缓存策略
读取数据
更新数据—常用数据,变动性不强,并发不高
更新数据—并发较高
然后将redis缓存集成到spring缓存管理中,写一个redis缓存类实现spring的Cache类
public class RedisCache implements Cache {
private RedisTemplate<String, Object> redisTemplate;
private String name;
我没贴完
spring配置文件中spring缓存集成redis缓存管理
<!-- spring自己的缓存管理器,这里定义了缓存位置名称 ,即注解中的value -->
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<!-- 这里可以配置多个redis -->
<!-- <bean class="com.cn.util.RedisCache">
<property name="redisTemplate" ref="redisTemplate" />
<property name="name" value="default"/>
</bean> -->
<bean class="com.ssmTest.util.RedisCache">
<property name="redisTemplate" ref="redisTemplate" />
<property name="name" value="common"/>
<!-- common名称要在类或方法的注解中使用 -->
</bean>
</set>
</property>
</bean>
开启spring缓存注解方式:
<!-- 启用缓存注解功能,这个是必须的,否则注解不会生效,另外,该注解一定要声明在spring主配置文件中才会生效 -->
<cache:annotation-driven cache-manager="cacheManager" />
我对spring注解的方式的key取值还有点弄不清楚,value倒是已经在配置文件中写好了,我这里是value=commom;
key要准确定位到方法和参数,才能确保缓存的值是某个方法参数下的值,要不然存的都是乱的,这个我还需要理解下
明天计划的事情:
完成redis,ssm项目的整合
关于缓存的崩溃情景学习理解
遇到的问题:
收获:
评论