一、异常描述
通过jedis客户端代码连接redis服务因默认为操作系统目录(非授权写入操作),报出异常"redis.clients.jedis.exceptions.JedisDataException: ERR operation not permitted"日志,详情如下所示
redis.clients.jedis.exceptions.JedisDataException: ERR operation not permitted@b@ at redis.clients.jedis.Protocol.processError(Protocol.java:115)@b@ at redis.clients.jedis.Protocol.process(Protocol.java:133)@b@ at redis.clients.jedis.Protocol.read(Protocol.java:202)@b@ at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:285)@b@ at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:204)@b@ at redis.clients.jedis.Connection.getBulkReply(Connection.java:193)@b@ at redis.clients.jedis.Jedis.get(Jedis.java:101)@b@ at com.xwood.demo.util.JedisUtil.get(JedisUtil.java:29)@b@ at com.xwood.demo.dev.poweroff.linux.LinuxRemotePowerOffService.invoke(LinuxRemotePowerOffService.java:86)@b@ at com.xwood.demo.gw.GatewayServlet.doPost(GatewayServlet.java:68)@b@ at com.xwood.demo.gw.GatewayServlet.doGet(GatewayServlet.java:55)@b@ at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)@b@ at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)@b@ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)@b@ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)@b@ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)@b@ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)@b@ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)@b@ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)@b@ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)@b@ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)@b@ at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)@b@ at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)@b@ at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)@b@ at java.lang.Thread.run(Thread.java:745)
二、解决步骤
1. 在redis服务目录下设置redis.conf文件,找到dbfilename dump.rdb行修改为授权目录(E:/xwood/redis-db/,根据实际情况设置),如修改如下
# ...@b@@b@# The filename where to dump the DB@b@dbfilename dump.rdb@b@@b@# ...
修改为
# ...@b@@b@# The filename where to dump the DB@b@dbfilename E:/xwood/redis-db/dump.rdb@b@@b@# ...
2. 重启redis服务,问题解决了