java - 在 AWS Elasticache (Redis) 上使用 SAVE 命令的 Jedis

标签 java amazon-web-services redis jedis amazon-elasticache

以下内容来自 AWS 中的 Tomcat 服务器,我们在其中设置了 Redis Elasticache 实例:

redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'SAVE'
at redis.clients.jedis.Protocol.processError(Protocol.java:127)
at redis.clients.jedis.Protocol.process(Protocol.java:161)
at redis.clients.jedis.Protocol.read(Protocol.java:215)
at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
at redis.clients.jedis.BinaryJedis.save(BinaryJedis.java:2700)
at cl.waypoint.util.CacheReports.setCacheReports(CacheReports.java:51)
at cl.waypoint.reports3.ReportStatus.setProgress(ReportStatus.java:86)
at cl.waypoint.reports3.Report101.getData(Report101.java:210)
at cl.waypoint.reports3.Report101.createXLS(Report101.java:274)
at cl.waypoint.reports3.ReportStatus.run(ReportStatus.java:38)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

似乎 Elasticache 缺少对此类命令的支持,因为 Redis 本身支持它。任何想法或解决方法将不胜感激

PS1:Jedis v2.9.0 和 Elasticache 实例具有引擎版本兼容性:3.2.4

PS2:我刚刚向 AWS 支持人员提出了同样的问题,遗憾的是我在这里没有任何反馈:(

最佳答案

你看过Redisson了吗? ?一些 Redis 命令在 AWS Elasticache 中不可用 SAVE 命令就是其中之一。这是此类 commands 的完整列表.尽管存在这些限制,Redisson 仍与 AWS Elasticache 紧密集成。

这是将它与 AWS Elasticache 结合使用的代码示例:

// 1. Create config object
Config config = new Config();
config.useReplicatedServers()
    .addNodeAddress("redis://first-node.aws.com:7000", "redis://second-node.aws.com:7001");

// 2. Create Redisson instance
RedissonClient redisson = Redisson.create(config);

// 3. Get object you need
RMap<MyKey, MyValue> map = redisson.getMap("myMap");

RLock lock = redisson.getLock("myLock");

RExecutorService executor = redisson.getExecutorService("myExecutorService");

// over 30 different objects and services are available...

关于java - 在 AWS Elasticache (Redis) 上使用 SAVE 命令的 Jedis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377155/

相关文章:

amazon-web-services - AWS lambda函数缩放和/tmp目录

redis - ElastiCache Redis 集群和 Istio

c# - SQL Server 更新/触发时无效的 redis 缓存

python - 通过 API Gateway 在 EC2 上运行函数

mysql 在 t2.micro Amazon Linux 实例上意外停止

redis - 为 redis INCR 定义起始编号

java - 如何创建自定义二进制协议(protocol)服务器?

java - 内存不足的最快方法

java - 如何开始然后停止运动

java - 加盐认证