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

基于html5的购物网站开发徐州地区网站建设

基于html5的购物网站开发,徐州地区网站建设,wordpress能采集,杭州的设计网站大全RedisTemplate 使用 pipeline 时需要注意的问题 RedisTemplate 使用 pipeline 进行批量 set 时,需要把 key 和 value 都转为字节 1. 直接使用 getBytes() 转为字节,在读取数据时,会抛出以下序列化异常 //错误代码 protected void process(…

RedisTemplate 使用 pipeline 时需要注意的问题

RedisTemplate 使用 pipeline 进行批量 set 时,需要把 key 和 value 都转为字节
1. 直接使用 getBytes() 转为字节,在读取数据时,会抛出以下序列化异常
//错误代码
protected void process(ReconRedisContext reconRedisContext) {String key = this.getLockKey(reconRedisContext);Pagination pagination = this.queryReconData(reconRedisContext);if (ObjectUtils.isNotEmpty(pagination)&& CollectionUtils.isNotEmpty(pagination.getList())) {List<?> resList = pagination.getList();redisTemplate.executePipelined(new RedisCallback<Set<?>>() {@Overridepublic Set<?> doInRedis(RedisConnection connection) throws DataAccessException {resList.stream().forEach(value -> {connection.sAdd(key.getBytes(StandardCharsets.UTF_8), value.toString().getBytes(StandardCharsets.UTF_8));});return null;}});}}// 抛出序列化异常
org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Unrecognized token 'value': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
2. 需要使用 RedisTemplate 已经设置的 Serializer ,将key 和 value 序列化成byte数据,代码如下:
protected void process(ReconRedisContext reconRedisContext) {RedisSerializer keySerializer = redisTemplate.getKeySerializer();RedisSerializer valueSerializer = redisTemplate.getValueSerializer();String key = this.getLockKey(reconRedisContext);Pagination pagination = this.queryReconData(reconRedisContext);if (ObjectUtils.isNotEmpty(pagination)&& CollectionUtils.isNotEmpty(pagination.getList())) {List<?> resList = pagination.getList();redisTemplate.executePipelined(new RedisCallback<Set<?>>() {@Overridepublic Set<?> doInRedis(RedisConnection connection) throws DataAccessException {resList.stream().forEach(value -> {connection.sAdd(keySerializer.serialize(key), valueSerializer.serialize(value));});return null;}});}}
3. 异常原因:
// RedisTemplate 默认使用 DefaultSetOperations 存放数据的源码如下:
public Long add(K key, V... values) {byte[] rawKey = rawKey(key);byte[][] rawValues = rawValues((Object[]) values);return execute(connection -> connection.sAdd(rawKey, rawValues));
}byte[] rawKey(Object key) {Assert.notNull(key, "non null key required");if (keySerializer() == null && key instanceof byte[]) {return (byte[]) key;}return keySerializer().serialize(key);
}byte[] rawValue(Object value) {if (valueSerializer() == null && value instanceof byte[]) {return (byte[]) value;}return valueSerializer().serialize(value);
}

看源码,RedisTemplate 也是把 key 和 value 都转为了字节,但是使用了我们自己设置的 Serializer ,所以,我们在使用 pipeline 时,也需要使用我们设置的 Serializer。

注意:根据源码来看,Redis 的其他数据结构,使用 pipeline 时,也会存在序列化的问题,在代码编写的时候,需要注意。
源自

http://www.15wanjia.com/news/175659.html

相关文章:

  • 小说网站防盗做的好页面设计的作用
  • 邢台网站制作地方网站使用帮助内容
  • 简洁网站模板下载wordpress修改网页
  • 网站建站系统有哪些信息中心完成网站建设
  • 北京学网站开发邯郸做wap网站建设
  • 网站形式的设计公司网页宣传页面设计
  • 在线设计响应式网站wordpress 清除cookies
  • 怎么优化网站排名具体怎么做厦门 微网站建设公司哪家好
  • 网站建设与优化合同国基建设集团有限公司网站
  • 个人小型网站建设北京微信网站制作电话
  • 促销礼品网站建设东营市东营区建设信息网
  • 招聘网站建设技术要求顺义顺德网站建设
  • python 电商网站开发营销型品牌网站建设价格
  • 网站建设售后服务内容天峻县公司网站建设
  • 做网站发广告有关中国文明网联盟网站建设活动方案
  • 企业英文网站建设永久无限免费看的app
  • 网站建设iis配置河南专业网站建设
  • 网站改版对优化的影响教育培训网站模板下载
  • 公司网站开源源码长沙网站改版
  • 微信网站制作系统潍坊昌大建设集团有限公司网站
  • 南皮 网站制作销售网站有哪些
  • 慈溪网站设计服务器网站扩容 一年1G价格
  • 没有服务器怎么做网站三亚手机台app
  • 中象做网站怎么样手机网站建设和
  • 上海松江区做网站公司网站的内容
  • 网站做推广有用吗湖南网站开发 d岚鸿
  • 郑州高端网站公司高清素材网站无水印
  • 宁波seo站外优化推广o2o商城上的二级网站
  • 合肥哪里有做网站的加速器网页版
  • 网站管理助手建站教程用别人网站名做长尾关键词