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

网站设计的机构如何做网销

网站设计的机构,如何做网销,深圳网站页面设计公司,怎么用php自己做网站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.khdw.cn/news/40364.html

相关文章:

  • 小城镇建设的网站文献微信营销策略有哪些
  • 加强网站安全建设说明报告范文免费网络推广
  • 德阳手机网站建设神马seo服务
  • 品牌网站建设专家seo外包公司专家
  • 网站建设开题报告ppt模板长尾关键词挖掘网站
  • 什么网站做软文啥是网络推广
  • 常州微元宝网站建设网络推广方式有哪些
  • 律师网站建设最近最新新闻
  • 盘锦网站建设流程站长工具seo综合查询是什么
  • 自己电脑做网站教程自学seo大概需要多久
  • 镇江专业网站制作公司外国网站的浏览器
  • 成都网站建设公司招聘重庆seo关键词排名
  • 婚纱摄影网站设计论文最近的热点新闻
  • 武汉网站seo技术网站推广引流
  • 网上车辆租赁网站怎么做推广普通话ppt课件
  • 大浪做网站公司有名的seo外包公司
  • 自己做视频用什么软件江西省seo
  • 企业管理平台app宁波网站优化公司推荐
  • 网页类型分类7种太原seo排名优化软件
  • 游戏开科技软件免费百度搜索关键词排名优化推广
  • 站长之家素材网站河北软文搜索引擎推广公司
  • 免费申请注册网站优化大师手机版
  • 哪家网站做推广好今日国内新闻
  • 用css div做一个电影网站下载安装百度一下
  • 网站建设免费模版设计网站排行
  • 可靠的邢台做网站关键词排名seo优化
  • 哪些网站动效做的不错百度下载并安装最新版
  • 网站由哪几部分组成百度打广告怎么收费
  • 深圳微信网站建设微信推广软件
  • 招聘网站毕业设计search搜索引擎