2 gokeiryou263 gokeiryou263 于 2014.12.01 12:25 提问

移动设备调用Web应用使用RedisSession机制报错ERR DISCARD without MULTI

1.应用web服务是提供给手机访问的,所以网络为无线网络
2.使用的Session机制是redis工具包,多个节点Session配置为共享
import com.ovea.jetty.session.redis.RedisSessionIdManager;
import com.ovea.jetty.session.redis.RedisSessionManager;
3.目前发现移动设备调用该应用,报以下错误后会不断增加报错频率直至无法访问

感谢兄弟姐妹们提供解决方案及宝贵经验,及等回复哦

2014-11-20 13:06:59,919 11365654 [qtp599675908-87] WARN com.ovea.jetty.session (RedisSessionManager.java:326) - [RedisSessionManager] complete - Problem persisting changed session data id=
site1inixlbw1nwgp1p74pactwwc30
redis.clients.jedis.exceptions.JedisDataException: ERR DISCARD without MULTI
at redis.clients.jedis.Protocol.processError(Protocol.java:54)
at redis.clients.jedis.Protocol.process(Protocol.java:61)
at redis.clients.jedis.Protocol.read(Protocol.java:122)
at redis.clients.jedis.Connection.getAll(Connection.java:207)
at redis.clients.jedis.BinaryTransaction.discard(BinaryTransaction.java:38)
at redis.clients.jedis.BinaryJedis.multi(BinaryJedis.java:1644)
at com.ovea.jetty.session.redis.RedisSessionManager$3.execute(RedisSessionManager.java:184)
at com.ovea.jetty.session.redis.PooledJedisExecutor.execute(PooledJedisExecutor.java:36)
at com.ovea.jetty.session.redis.RedisSessionManager.storeSession(RedisSessionManager.java:179)
at com.ovea.jetty.session.redis.RedisSessionManager$RedisSession.complete(RedisSessionManager.java:323)
at org.eclipse.jetty.server.session.AbstractSessionManager.complete(AbstractSessionManager.java:186)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:203)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
at org.eclipse.jetty.server.Server.handle(Server.java:350)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
at java.lang.Thread.run(Thread.java:744)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Spring Redis 事务Multi Exec Watch
今天在测试spring Redis的时候出现这么个:org.springframework.dao.InvalidDataAccessApiUsageException: ERR EXEC without MULTI; nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR EXEC without MU
Spring Data Redis 二:RedisTemplate实现事物问题剖析和解决
Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,Redis对事物支持不会很复杂,当一个客服端连接Redis服务时,发出了MULTI命令时,这个连接会进入事物,在执行MULTI命令之后,执行所有的命令都不会执行,会先放到一个队列中,会提示正在Query,当最后执行EXEC命令之后,Redis会按照之前的进入队列的顺序,执行命令。 Spring Data Redis 是对JRedis的客服端进行很好的封装, Spring Data Redis的RedisTemplate提供了MUL
python学习笔记4-redis multi watch实现锁库存
python 关于redis的基本操作网上已经很多了,这里主要介绍点个人觉得有意思的内容1.redis的事务操作以及watch 乐观锁;后面描述2.tornado下异步使用redis的方式         redis是单进程单线程模型,本身应对外部请求的是单任务的,也是多线程安全的,这个大家都应该知道的, 所以才会经常有人用redis做计数服务。         首先red
redis.clients.jedis.exceptions.JedisDataException: ERR Protocol error: invalid bulk length
今天调式时发现一个问题:redis.clients.jedis.exceptions.JedisDataException: ERR Protocol error: invalid bulk length。redis数据异常,原因是存进redis时key或者value为空值导致的,因为redis有一个限制,字符串长度不能小于0或者大1024.
mysql 错误Please DISCARD the tablespace before IMPORT解决方案
MySQL:Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT 两步解决问题: 一、从mysql删除表 二、打开mysql\data\,删除对应的表文件即可。 .frm,.MYD,.MYI三个文件。 如果表里有数据,可能需要高级的修复表
redis事务(multi,exec,discard,watch),错误处理
事务是指“一个完整的动作,要么全部执行,要么什么也没有做”。redis事务四大指令: MULTI、EXEC、DISCARD、WATCH。这四个指令构成了redis事务处理的基础。1.MULTI用来组装一个事务;2.EXEC用来执行一个事务;3.DISCARD用来取消一个事务;4.WATCH用来监视一些key,一旦这些key在事务执行之前被改变,则取消事务的执行。redis> MULTI //...
Redis io.lettuce.core.RedisCommandExecutionException: ERR Client sent AUTH, but no password is set
CONFIG SET requirepass "xx"
redis in python:事务的取消
python redis事物的取消使用reset()函数。
spring-data-redis中的坑和误区
spring的redis模板中有问题的地方在项目开发过程中,想要进行redis的并发控制,这时候,想当然地使用了spring-data-redis库中template里面提供的multi()和exec()方法,但其实是有一些坑和误区在里面
错误代码: 1109 Unknown table 'ename' in MULTI DELETE
1、错误描述1 queries executed, 0 success, 1 errors, 0 warnings 查询:delete a.ename from emp 错误代码: 1109 Unknown table 'ename' in MULTI DELETE 执行耗时 : 0 sec 传送时间 : 0 sec 总耗时 : 0 sec2、错误原因     删除数据库表