java.lang.ClassCastException: java.util.LinkedHashSet cannot be cast to java.util.List
at org.redisson.spring.data.connection.RedissonConnection.sRandMember(RedissonConnection.java:993)
at org.springframework.data.redis.core.DefaultSetOperations.lambda$distinctRandomMembers$8(DefaultSetOperations.java:204)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:224)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:184)
at org.springframework.data.redis.core.AbstractOperations.execute(AbstractOperations.java:95)
at org.springframework.data.redis.core.DefaultSetOperations.distinctRandomMembers(DefaultSetOperations.java:203)
程序中使用 redisTemplate.opsForSet().distinctRandomMembers(key,count) 来实现功能
redission中报错的方法(RedissonConnection#sRandMember)如下 :
public List<byte[]> sRandMember(byte[] key, long count) { return read(key, ByteArrayCodec.INSTANCE, RedisCommands.SRANDMEMBER, key, count); }
断点跟踪了 read方法的返回值 是LinkHashSet 而sRandMember方法要求返回list所以抛出了异常
没有办法,后来改为使用redisTemplate.opsForSet().members(key) 查所有的数据,然后在程序里过滤返回部分数据。
求解!!!!
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
保存数据之前规范一下名称的前缀,这样读取就更好控制。