发表于: 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项目的整合

关于缓存的崩溃情景学习理解

遇到的问题:
收获:


返回列表 返回列表
评论

    分享到