问题标签 [jedis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Redis hash写入速度很慢
我面临一个非常奇怪的问题:使用 redis 时我的写入速度非常糟糕(在理想情况下,写入速度应该接近 RAM 上的写入速度)。
这是我的基准:
RandomString
是一个生成随机字符串的类(arg 是字符串长度)
以下是一些结果:
[写入]nb:100000|时间:4.408319378|速度:0.713905907055318 MB/s [写入]nb:100000|时间:4.447246995|速度:0.707656949946542 MB/s
我尝试在配置文件中修改 save to hdd 参数,但没有任何改进。
我有 2 个想法:
1. 这是一个套接字问题,因为客户端和服务器(redis)在同一台机器上
2. 连接器实现存在性能问题
更新设置操作的基准测试结果:
====== SET ======
10000 个请求在 0.09 秒内完成
50 个并行客户端
3 字节有效负载
保持活动状态:199.51% <= 1 毫秒
100.00% <= 1 毫秒
111111.11 个请求/秒
系统规格:
- Ubuntu 11.04
- 8GB RAM
- Intel i5 处理器
任何建议将不胜感激。
java - 我想知道如何在 Jedis 中使用 ShardedJedis 遍历所有键?
我正在用redis在服务器端写一个消息拉取中心,MsgEntity
是javabean来表示一个消息:package com.pipeline;
公共类 MsgEntity {
}
我需要将消息实体作为哈希结构存储在redis中,关键是msgId
,我的需求是遍历redis中的所有消息,我ShardedJedis
在java中使用以保证性能,所以不像Jedis
,我没有keys
办法在redis中获取所有键,有没有什么办法解决这一问题?
也许List
是有帮助的,但由于expire
时间存在,并且无法设置项目的过期时间List
,我认为它没有真正的帮助。提前谢谢。
java - 如何使用 java 客户端从 redis 读取 erlang 术语?
例如,我通过 jedis 将元组 T = {k1, v1, k2, v2} 保存到 redis:
我正在尝试使用下面的代码来阅读这个 erlang 术语:
错误是:com.ericsson.otp.erlang.OtpErlangDecodeException:未知数据类型:239。
那么我怎样才能正确地得到 erlang 术语呢?
二郎端:
term_to_binary({k1, v1, k2, v2})。
<<131,104,4,100,0,2,107,49,100,0,2,118,49,100,0,2,107,50, 100,0,2,118,50>>
Java端:
j.get("mykey").getBytes():
-17 -65 -67 104 4 100 0 2 107 49 100 0 2 118 49 100 0 2 107 50 100 0 2 118 50。
似乎只有前 3 个字节不同。所以我把它们改成byte(131),然后就可以用System.out.println(OtpErlangObject.decode(ois))正确打印了。
但是当术语更复杂时,例如对于内部带有列表的记录,它就不起作用了。因为其他一些字符不仅会出现在数据的开头,还会出现在数据的末尾和中间。
为什么我保存的数据与我得到的不同?
java - Jedis - 何时使用 returnBrokenResource()
我们应该在什么时候使用这种方法。在 JedisConnectionException、JedisDataException 或任何 JedisException 上。据我所知,Jedis 没有好的 API 文档。
heroku - 具有结果的异步工作队列的正确方法是什么?
我在 heroku 上有一个 REST 服务器。它将为 REST 服务提供 N-dynos,为工作人员提供 N-dynos。
本质上,我有一些长期运行的休息请求。当这些进来时,我想将它们委托给其中一名工作人员并给客户端一个重定向以轮询操作并最终返回操作结果。
为此,我将使用 RedisToGo 的 JEDIS/REDIS。据我所知,有两种方法可以做到这一点。
- 我可以使用 PUB/SUB 功能。让发布者为工作结果创建唯一身份,并在重定向 URI 中将这些身份返回给 REST 客户端。
- 本质上是一样的,但不是 PUB/SUB 而是使用 RPUSH/BLPOP。
我不确定#1的优势是什么。例如,如果我有一个名为 LongMathOperation 的任务,似乎我可以简单地为此列出一个列表。列表元素是 JSON 对象,具有数学运算参数以及由 REST 服务器生成的用于放置结果的 UUID。然后所有工作人员 dynos 将只有阻塞 BLPOP 调用,第一个将获得工作,处理它,并使用 UUID 的键将结果放入 REDIS。
说得通?所以我的问题是“为什么使用 PUB/SUB 会比这更好?” PUB/SUB 在这里带来了什么我想念的东西?
谢谢!
spring - spring-data-redis redisTemplate Exception
When I call get() method, an exception occured
here is the code
when I use incrBy method, there are no exceptions but only errors only get method
here is the stacktrace ---
exception - Redis 与 Jedis 客户端的交易异常
为了避免在我的 redis 频道中出现重复,我通过在 Redis 中设置索引来检查消息是否已经存在。以下是我的实现。但是,它给出了一个例外。
这是实现。
我需要在事务内部进行获取,因为有多个发布者可能发布完全相同的消息。
java - 在 Spring Jetty 和 Camel 中处理资源的正确方法
我有一个 webapp(Jetty、Spring 和 Camel)。现在我想在我的骆驼路线中连接到 Redis(使用 Jedis)。我的问题是我应该在哪里(以及何时)创建 Jedis 池,以及如何在我的 Camel 路线中访问这个池?我正在考虑在我的 Camel 上下文 XML 中创建池。但我不确定如何在我的路线(Java DSL)中访问这个池。
spring - Spring数据Redis HGETALL操作
我Redis
用作 Spring Web 应用程序的数据存储,并Spring Data-Redis
用作我的客户端与Redis
.
我HashMap
用来存储一个具有多个字段的对象。我可以Redis
使用方法一次将所有字段放入其中DefaultRedisMap.putAll()
,但我无法一次获取整个对象,而是使用方法BoundHashOperations
获取每个字段get()
。
我想知道有什么方法可以做到这一点,就像HGETALL
支持的操作一样Redis
?
concurrency - 多个并发程序在同一个哈希键上执行读取/删除的 Redis 行为
我有一个程序 ( )(基于 Jedis),它定期program_1
写入 Redis HASH ( )。KEY_1
我有另一个program_2
定期执行的程序 ()(单独的 JVM 进程),并且在 Redis 事务中执行以下操作:
我的假设是,当 program_2 删除了 HASH(使用 KEY_1)时,下一次 program_1 运行它会再次创建 HASH。这个对吗 ?