jedis报ClassCastException: [B cannot be cast to XXX

在代码里对一个值为long类型key执行incrby操作,一直都正常,突发一例异常:

Caused by: java.lang.ClassCastException: [B cannot be cast to java.lang.Long
         at redis.clients.jedis.Connection.getIntegerReply(Connection.java:210)
         at redis.clients.jedis.Jedis.incrBy(Jedis.java:556)
         at com.xxx.xxxxxClient.incrBy(SingleJedisClientImpl.java:119)
         ... 19 common frames omitted

其中com.xxx.xxxxxClient.incrBy是jedis客户端的一个封装和管理。应该是xxxxxClient这里出了问题。再或者是jedis本身线程池管理出了问题。

----------------以下是网上资料,转自http://mengkang.net/443.html---------------------------------------

Caused by: java.lang.ClassCastException: [B cannot be cast to java.util.List  
      at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:218) 
      at redis.clients.jedis.Connection.getMultiBulkReply(Connection.java:211)  
      at redis.clients.jedis.Jedis.lrange(Jedis.java:862)  
      at me.topit.site.util.redis.CacheClientBase.lrange(CacheClientBase.java:516)
      at me.topit.site.cache.TagCache.get(TagCache.java:37)
      at me.topit.site.model.Tags.getUserSelectedTags(Tags.java:141)
      at me.topit.site.service.FeedService.getType(FeedService.java:41)
或者
Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to [B
      at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:201)
      at redis.clients.jedis.Connection.getBulkReply(Connection.java:190) 
      at redis.clients.jedis.Jedis.hget(Jedis.java:601) 
      at me.topit.site.util.redis.CacheClientBase.hget(CacheClientBase.java:51)
      at me.topit.site.cache.AccountCache.getAuth(AccountCache.java:30)
      at me.topit.site.model.Account.getAuth(Account.java:137)  
      at me.topit.site.service.AccountService.loginCheck(AccountService.java:112)
      at me.topit.site.service.BaseService.isLogin(BaseService.java:87) 
      at me.topit.site.service.PushService.bind(PushService.java:53)

后来发现是因为我做了redis 连接的线程池,使用的一直是一个在父类里申明的静态变量,各个地方调,都是直接用.使用完之后也没有释放.所以每次项目跑着跑着,过几个小时就访问超级慢.最后发现是因为使用的是一个连接的原因. 现在改为每次使用都先初始化,然后每次用完之后都释放.

------------------------------------------------------------------------------------------------------------

可能是作者提到的这个原因。未确认。

时间: 2024-10-08 12:24:36

jedis报ClassCastException: [B cannot be cast to XXX的相关文章

java.lang.ClassCastException:fragment cannot be cast to android.support.v4.app.Fragment

已启动APP后台就报了这个错误! java.lang.ClassCastException:fragment cannot be cast to android.support.v4.app.Fragment Java.lang.classcastexception:片段不能被转换为android.support.v4.app.fragment 原因是因为在使用继承Fragment的时候 导错包了:import android.support.v4.Fragment; 正确的包:import a

解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常

EJB本地调用方式:把Webclient和EJB服务端部署到同一个JBoss,client和server通过一个JVM进行通信. Web客户端本地调用时.需引用EJB服务端打包的jar,不需引用JBoss/client下的jar和src下的jndi.properties文件.调用方式例如以下: <%@ page language="java" import="java.util.*,javax.naming.*,com.tgb.ejb.*" pageEncod

解决EJB本地调用报“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常问题

EJB本地调用方式:把Web客户端和EJB服务端部署到同一个JBoss,客户端和服务器通过一个JVM进行通信. Web客户端本地调用时,需引用EJB服务端打包的jar,不需引用JBoss/client下的jar和src下的jndi.properties文件,调用方式如下: <%@ page language="java" import="java.util.*,javax.naming.*,com.tgb.ejb.*" pageEncoding="u

Android混淆编译时,用到gson-2.2.2.jar进行反射解析json数据时,报ClassCastException错误

在我的代码中,我使用方法是: public synchronized <T> T parseJson(String json, Class<T> classOfT) throws Exception{ T target = null; Gson gson = new Gson(); target = gson.fromJson(json, classOfT); return target; } 之后在我的Activity中使用方式是: String addModel = JsonP

hivesql 迁移spark3.0 sparksql报错如Cannot safely cast &#39;字段&#39;:StringType to IntegerType的问题

一 问题 hivesql可以正常运行,spark3.0运行报错如图 spark3.0配置 查看源码新增一个 val STORE_ASSIGNMENT_POLICY = buildConf("spark.sql.storeAssignmentPolicy") .doc("When inserting a value into a column with different data type, Spark will perform " + "type coe

在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型XXX的对象时检测到循环引用。

在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型 的对象时检测到循环引用. 异常信息(部分): System.Web.Services.Protocols.SoapException: 服务器无法处理请求. ---> System.InvalidOperationException: 生成 XML 文档时出错. ---> System.InvalidOperationException: 序列化类型 Web

SQLServer 报错:用户、组或角色&#39;XXX&#39; 在当前数据库中已存在. 错误:15023解决方法

背景: 最近在迁移SQLServer数据库2008时,新建用户后,做用户映射时. SQLServer 报错:用户.组或角色'XXX' 在当前数据库中已存在. 错误:15023. 下面讲一下解决的方法. 分析:    将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户.    这种情况被称为存在"孤立用户".此时是不能通过新建登录或者是对同名登录授予对应数据库的"用户"权限来解决登录问题,    因为SQ

附加数据库报错:无法打开物理文件 XXX.mdf&quot;,操作系统错误 5:&quot;5(拒绝访问。)&quot;

今天在附加数据库的时候出现如图报错信息: 无法打开物理文件 XXX.mdf",操作系统错误 5:"5(拒绝访问.)"错信息如图:(是不是远程服务器数据库附加出现只读那个情况,也可以这样解决??,经测试,是这样的,不过远的用户是user,改成完全控制允许) 首先,我的数据库安装根目录和附加的数据库不是同一个目录,在安装数据库的时候根目录是默认的,为C盘下的目录,而我要附加的数据库的目录为E盘下,所以:解决方案一:使用windows账户登进,将被附加的数据库移植到根目录下,如图:

cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX&#39;

转载自 居家懒人 http://www.cnblogs.com/JD85/archive/2012/09/17/2688128.html 加入写了新场景SecondScene,结果在cpp文件里类名地方报错说undefined reference to `vtable for SecondScene', 很简单,貌似是每个新场景都要先注册一下,找到jni-->Classes目录下的Android.mk文件,在 LOCAL_SRC_FILES := AppDelegate.cpp HelloWor