DefaultHashOperations的multiget如果没有数据会返回java.util.Collections.EmptyList,这个List没有重写add方法。

List<Long> resultIds=redisTemplate.boundHashOps(“key”).multiGet(ids)

resultIds在add一个新元素时,报了一下的错:
java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)

原因:

org.springframework.data.redis.core.RedisTemplate#boundHashOps

    public List<HV> multiGet(Collection<HK> hashKeys) {return ops.multiGet(getKey(), hashKeys);}

org.springframework.data.redis.core.DefaultHashOperations#multiGet

    public List<HV> multiGet(K key, Collection<HK> fields) {if (fields.isEmpty()) {return Collections.emptyList();//这个list是java.util.Collections#emptyList中的java.util.Collections.EmptyList}final byte[] rawKey = rawKey(key);final byte[][] rawHashKeys = new byte[fields.size()][];int counter = 0;for (HK hashKey : fields) {rawHashKeys[counter++] = rawHashKey(hashKey);}List<byte[]> rawValues = execute(new RedisCallback<List<byte[]>>() {public List<byte[]> doInRedis(RedisConnection connection) {return connection.hMGet(rawKey, rawHashKeys);}}, true);return deserializeHashValues(rawValues);}

这个java.util.Collections.EmptyList没有重写add方法:

    private static class EmptyList<E>extends AbstractList<E>implements RandomAccess, Serializable {private static final long serialVersionUID = 8842843931221139166L;public Iterator<E> iterator() {return emptyIterator();}public ListIterator<E> listIterator() {return emptyListIterator();}public int size() {return 0;}public boolean isEmpty() {return true;}public boolean contains(Object obj) {return false;}public boolean containsAll(Collection<?> c) { return c.isEmpty(); }public Object[] toArray() { return new Object[0]; }public <T> T[] toArray(T[] a) {if (a.length > 0)a[0] = null;return a;}public E get(int index) {throw new IndexOutOfBoundsException("Index: "+index);}public boolean equals(Object o) {return (o instanceof List) && ((List<?>)o).isEmpty();}public int hashCode() { return 1; }@Overridepublic boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);return false;}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);}@Overridepublic void sort(Comparator<? super E> c) {}// Override default methods in Collection
        @Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);}@Overridepublic Spliterator<E> spliterator() { return Spliterators.emptySpliterator(); }// Preserves singleton propertyprivate Object readResolve() {return EMPTY_LIST;}}

DefaultHashOperations multiget的一个坑相关推荐

  1. 困扰多日的C#调用Haskell问题竟然是Windows的一个坑

    最近一直被C#调用Haskell时的"尝试读取或写入受保护的内存"问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected ...

  2. SAP WM LT10事务代码的一个坑?

    SAP WM LT10事务代码的一个坑? 执行事务代码LT10,试图将storage type SAM下物料库存的几个SU转入同一个货架上.Storage type SAM有启用SUM功能的. 执行, ...

  3. mysql div 没有小数,mysql order by limit 的一个坑

    mysql order by limit 的一个坑 分页查询的时候遇到的坑: 发现的问题: 对单个无索引的字段进行排序后limit .发现当被排序字段有相同值时并且在limit范围内,取的值并不是正常 ...

  4. 移动端开发碰到一个坑

    移动端开发真是不断踩坑,今天在做一个移动端的组件,又发现了一个坑,记录到日志里面,做个记录,以便以后再遇到这个问题有个记录可以参考. 在ios中的chrome浏览器中,手指从屏幕上方移动出屏幕(一定要 ...

  5. centos 升级mysql_CentOS 7下升级MySQL5.7.23的一个坑

    发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例 在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6. ...

  6. 0705 - 说说 NSPopover 的一个坑

    今天开发 iTips,遇到一个很诡异的问题:NSOutlineView 中的 NSTableCellView 中的 NSTextField,始终有一个背景色,无论怎么设置都无法去掉.如下图中左侧部分所 ...

  7. nodejs request module里的json参数的一个坑

    今天工作的时候遇到一个坑,在客户端用nodejs给服务器发送HTTP请求,服务器老是报错:In the context of Data Services an unknown internal ser ...

  8. 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

    我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也 ...

  9. centos mysql 升级 5.7_CentOS 7下升级MySQL5.7.23的一个坑

    发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例 在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6. ...

最新文章

  1. 详解微服务技术中进程间通信
  2. sqlmap 跑access_sqlmap注入Access
  3. idea离线下载lombok,以及lobok版本不兼容
  4. 最小错误率贝叶斯决策
  5. ceph学习之pool
  6. Js对象如何添加方法、查看Api
  7. Python并发机制的实现(一)——多进程
  8. 数论知识(2)-------------欧拉函数
  9. 北美电影票房Top10-2019年12月27日:《小妇人》表现亮眼
  10. oracle静默安装集群,Oracle RAC 静默安装实践
  11. eclipse的复活
  12. 2019 CSDN博客之星第三名,感谢各位支持
  13. Navicat 连接数据库报错:1045-Access denied for user ‘root‘@‘localhos
  14. 办理物联网卡不实名会有什么后果呢
  15. 公司内局域网访问接口
  16. maven surefire的executions配置
  17. 从表征到行动---意向性的自然主义进路(续二)
  18. 计算机核心刊物投稿心得
  19. 微信公众号开发——现金红包、企业付款
  20. 【MSAR】当机器学习遇到计算机视觉——下篇

热门文章

  1. 数据结构:单向环形链表
  2. Linux操作系统下如何利用SSH进行远程控制
  3. Nike推Nike Fit可轻松丈量足部尺寸与推荐鞋款
  4. 点量OTT TV 点播软件模式为何受海外华人运营者喜爱?
  5. JavaScript四舍五入的改进
  6. 允许MySQL 帐号远程登录
  7. OCCI读写Oracle Spatial的SDO_Geometry
  8. Node.js 连接数据库
  9. 华为系统鸿蒙假的,鸿蒙系统只是噱头?华为董事长:不是噱头,必要时也能用于手机 - 区块网...
  10. 小程序与服务器封装,小程序-网络请求封装