当前位置: 首页 > news >正文

国外做文化的网站北京网站优化什么价格

国外做文化的网站,北京网站优化什么价格,广州网站开发就业培训课程,wordpress页面大小调节两者的关系是 StringRedisTemplate 继承 RedisTemplate 。 两者的数据是不共通的#xff1a;也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据#xff0c;RedisTemplate 只能管理 RedisTemplate 中的数据。 RedisTemplate 看这个类的名字后缀是 Temp…两者的关系是 StringRedisTemplate 继承 RedisTemplate 。 两者的数据是不共通的也就是说 StringRedisTemplate 只能管理 StringRedisTemplate 里面的数据RedisTemplate 只能管理 RedisTemplate 中的数据。 RedisTemplate 看这个类的名字后缀是 Template 如果了解过 Spring 如何连接关系型数据库的大概不会难猜出这个类是做什么的 它跟 JdbcTemplate 一样封装了对Redis的一些常用的操作当然 StringRedisTemplate 跟 RedisTemplate 功能类似那么肯定就会有人问为什么会需要两个Template呢一个不就够了吗其实他们两者之间的区别主要在于他们使用的序列化类是不同的。 StringRedisTemplate 的API假定所有的数据类型化都是字符类型即key和value都是字符串类型。默认采用的是 String 的序列化策略即 StringRedisSerializer 保存的key和value都是采用此策略序列化保存的。RedisTemplate 默认采用的是JDK的序列化策略即 JdkSerializationRedisSerializer 保存的key和value都是采用此策略序列化保存的。 RedisTemplate 默认使用的序列类在在操作数据的时候比如说存入数据会将数据先序列化成字节数组然后在存入 Redis 数据库这个时候打开 Redis 查看的时候你会看到你的数据不是以可读的形式展现的而是以字节数组显示类似下面 StringRedisTemplate 默认存入的数据就是原文因为 StringRedisTemplate 默认使用的是 String 序列化策略使用 StringRedisTemplate 默认存入数据长这个样 造成两者差异的原因是因为在初始化时两者使用的序列化策略不同导致的翻开源码可以看到如下 public class RedisTemplateK, V extends RedisAccessor implements RedisOperationsK, V, BeanClassLoaderAware {private boolean enableTransactionSupport false;private boolean exposeConnection false;private boolean initialized false;private boolean enableDefaultSerializer true;Nullableprivate RedisSerializer? defaultSerializer;Nullableprivate RedisSerializer keySerializer null;Nullableprivate RedisSerializer valueSerializer null;Nullableprivate RedisSerializer hashKeySerializer null;Nullableprivate RedisSerializer hashValueSerializer null;// 其它字段略...public RedisTemplate() {}// 该方法是重写RedisAccessor的方法 RedisAccessor实现了spring的InitializingBean 也就是在启动时会执行该方法 可以看到该方法默认的序列化为JdkSerializationRedisSerializerpublic void afterPropertiesSet() {super.afterPropertiesSet();boolean defaultUsed false;if (this.defaultSerializer null) {this.defaultSerializer new JdkSerializationRedisSerializer(this.classLoader ! null ? this.classLoader : this.getClass().getClassLoader());}if (this.enableDefaultSerializer) {if (this.keySerializer null) {this.keySerializer this.defaultSerializer;defaultUsed true;}if (this.valueSerializer null) {this.valueSerializer this.defaultSerializer;defaultUsed true;}if (this.hashKeySerializer null) {this.hashKeySerializer this.defaultSerializer;defaultUsed true;}if (this.hashValueSerializer null) {this.hashValueSerializer this.defaultSerializer;defaultUsed true;}}if (this.enableDefaultSerializer defaultUsed) {Assert.notNull(this.defaultSerializer, default serializer null and not all serializers initialized);}if (this.scriptExecutor null) {this.scriptExecutor new DefaultScriptExecutor(this);}this.initialized true;}// 其余方法略... } 可以看到 RedisTemplate 在初始化时是无参构造通过 Spring 的 Bean 加载机制在项目启动时执行afterPropertiesSet来完成序列化设置如果需要自定义序列化配置可以自己写一个 RedisTemplate 的Bean来完成配置。 Configuration public class RedisConfig {Beanpublic RedisTemplateString,Object redisTemplate(Autowired RedisConnectionFactory redisConnectionFactory) {// 创建RedisTemplateRedisTemplateString,Object redisTemplate new RedisTemplateString,Object();// 字符串和JDK序列化器RedisSerializerString strSerializer RedisSerializer.string();RedisSerializerObject jdkSerializer RedisSerializer.java();// 设置键值序列化器redisTemplate.setKeySerializer(strSerializer);redisTemplate.setValueSerializer(jdkSerializer);// 设置哈希字段和值序列化器redisTemplate.setHashKeySerializer(strSerializer);redisTemplate.setHashValueSerializer(jdkSerializer);// 给redisTemplate设置连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;} } StringRedisTemplate 就比较简单了直接继承了 RedisTemplate在初始化时默认使用了 String 序列化源码如下 public class StringRedisTemplate extends RedisTemplateString, String {public StringRedisTemplate() {this.setKeySerializer(RedisSerializer.string());this.setValueSerializer(RedisSerializer.string());this.setHashKeySerializer(RedisSerializer.string());this.setHashValueSerializer(RedisSerializer.string());}// 其他方法略... } 那么就可以得出一个结论如果你想使用默认的配置来操作 Redis则如果操作的数据是字节数组就是用RedisTemplate如果操作的数据是明文使用 StringRedisTemplate。 当然在项目中真实使用时一般是自定义 RedisTemplate 的 Bean 实例来设置具体的序列化策略说白了就是 RedisTemplate 通过自定义 Bean 可以实现和 StringRedisTemplate 一样的序列化使用起来更加灵活。
http://www.zqtcl.cn/news/294648/

相关文章:

  • 创意网站设计模板点击器免费版
  • 做的不错的h5高端网站网站是怎么优化的
  • 淄博做网站优化佛山 做网站公司
  • 设计网站的步骤网站开发怎么学习
  • 提供网站技术国内外电子政务网站建设差距
  • 阜新建设网站物流网站建设的小结
  • 个人可以网站备案吗建设多用户网站
  • 平面设计素材库淄博网站优化价格
  • moodle网站建设论坛排名
  • 网站建设与推广方式起名网站建设
  • 厦门网站建设网站制作网站广告推广价格
  • 网站建设费用计入哪个科目深圳网站建设工资
  • 大岭山镇网站建设公司软文是什么文章
  • 网站正在建设张雪峰谈电子商务
  • 网站建设中标签导航的特征小型广告公司简介
  • 广西省建设厅网站jquery特效网站
  • 做推文的网站创意设计绘画作品
  • 做响应式网站的体会长沙域名注册公司
  • 网站备案照片 多少钱网站怎么做网页游戏
  • 金坛区建设局网站中搜网站提交
  • 建站之星如何建网站html静态网页作业成品
  • 商城类网站用什么做珠海找工作哪个网站好
  • 宁波建站模板厂家太原企业网站排名
  • 厦门网站建设定制多少钱wordpress能用一个数据库
  • 找人做网站需要准备什么材料怎么建设自己淘宝网站首页
  • 汽车网站建设费用js怎么做网站
  • 四川万景建设工程有限公司网站做公司网站用什么系统
  • 长沙企业建站系统3d视频制作公司
  • 长沙的网站制作公司网站建设方案的需求分析
  • 电子商务网站发展建设论文网站开发需要经过的几个主要阶段