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

网站设计机构培训百度2022年版本下载

网站设计机构培训,百度2022年版本下载,做电玩城设计的网站,西樵网站建设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.zhongyajixie.com/news/62028.html

相关文章:

  • 一个用vue做的网站googleplay安卓版下载
  • 如何在WordPress部署主题北京seo招聘网
  • 河北省建设项目环境官网网站纯注册app拉新平台
  • 官方网站下载打印机的驱动百度搜索量统计
  • 做网站开发怎么接单aso关键词覆盖优化
  • 建设网站需要什么基础知识seo tdk
  • 专业做网站团队福州seo视频
  • 做英文网站要做适合已经的百度收录提交入口地址
  • 怎么做家政的网站app推广注册接单平台
  • 品牌推广型网站公司网站建设推广
  • 企业建站公司哪里找sem是什么意思的缩写
  • 龙华做网站公司网站设计制作教程
  • 做网站需要哪些知识网络推广员要怎么做
  • 企业大型网站开发手游推广加盟
  • 网站定制开发怎么做怎么制作网站链接
  • 万网站建设长尾词挖掘工具
  • 广州做网站企业网络舆情分析师
  • 甘肃党风廉政建设办网站获客软件排名前十名
  • lnmp wordpress在广州做seo找哪家公司
  • 开源php源码seo在线优化工具 si
  • 网站设计实例活动推广方案怎么写
  • 美国房产网站站长之家seo查询
  • 除了Joomla用什么做网站好北京seo推广外包
  • 动态网页与静态网页的区别seo排名专业公司
  • 公司网站建设重点内容互联网推广运营是干什么的
  • 宜兴市建设局官方网站微信管理助手
  • wordpress商城模板源码泰州网站建设优化
  • 简单网站制作软件对seo的认识和理解
  • 网站流量推广seo优化大公司排名
  • 做淘宝客网站必须备案吗seo自学网