为了避免在我的redis通道中出现重复,我通过在Redis中设置索引来检查消息是否已经存在。下面是我的实现。然而,它给出了一个例外。
redis.clients.jedis.exceptions.JedisDataException: Please close pipeline or multi block before calling this method.
at redis.clients.jedis.Response.get(Response.java:23)
下面是实现。
Jedis jedis = pool.getResource();
我正在学习jedis,我不能准确地找出这段代码的问题所在。任何人都可以帮助在语句tx.exec()中发生me.The异常吗?
public class JedisFactory {
public static void main (String [] args){
JedisPool pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1", 6379);
Jedis jedis = pool.getResource();
Pipeline pipeline = jedis.pipelin
我想要页面zrange,得到错误:在调用这个方法之前请关闭流水线或多个块。如何解决这个问题(我的集群不支持多命令)?
runWithPipeline(new JedisPipelinedCallback() {
@Override
public void execute(Pipeline pipeline) {
int offset = 0;
boolean finished = false;
do {
// need to paginate the keys
Set<byte[]> rawKeys = pipeline.z
我用的是红宝石和Akka,所以我不需要阻塞电话。莴苣内置了异步的未来调用。但吉迪斯是Redis推荐的客户端。谁能告诉我我用的方法是不是对的。如果是这样的话,哪一个更好。
Jedis I使用静态Jedis连接池获取con,并使用Akka将来的回调来处理结果。这里我关心的是,当我使用另一个线程(可调用)来获得线程最终将阻塞的结果时。而生菜可能有一些更有效的方法来做到这一点。
private final class OnSuccessExtension extends OnSuccess<String> {
private final ActorRef se
我是redis的新手,还在玩它。我想测试它是否与我的项目相关,但我不确定我正在运行的特定命令。SO上的用户让我相信了使用管道和事务的性能优势,所以我想我应该问一下如何做到这一点。
基本上,我有两个语句,我只想发布,而不需要等待结果(似乎是管道衬里的一个很好的候选者。它看起来是这样的:
Does valueX exist?
If it does insert valueY
这很简单,但到目前为止,我一直在寻找的所有方法似乎都在等待一个响应,如果ValueX存在,因为我正在对我的程序执行超过十亿次循环,所以它会使它停止。
这个是可能的吗?如果有帮助,我正在使用Java,但还没有确定是哪一个客户端库
我正在使用,我希望创建一个包含多个独立事务(多个/exec块)的管道。
从我到目前为止看到的情况来看,似乎只有将整个管道切换到原子事务中才有可能。
Pipeline pipeline = jedis.pipelined();
pipeline.multi(); // Does not return a Jedis Transaction
// From there, everything done on Pipeline is in a single transaction.
我本以为pipeline.multi()会返回一个Transaction。
我怀疑在单个事务中拥有整个管道比在单个管道
我已经在几个线程中看到了答案,但对我来说并不起作用,而且因为我的问题偶尔会发生,所以问这个问题是否有人有任何想法。
我使用的是jedis版本2.8.0,Spring Data redis版本1.7.5。和redis服务器版本2.8.4用于我们的缓存应用程序。
我有多个缓存保存在redis中,get请求是从redis完成的。我正在使用spring data redis API来保存和获取数据。
所有的保存和获取都可以正常工作,但偶尔会出现以下异常:
Cannot get Jedis connection; nested exception is redis.clients.jedis.excep
在方法callAndUpdateInB()中,假设我调用B类的update()方法(@Component),其中我调用myRepository.save()方法来更新db中的一些数据,而在相同的函数中,我正在执行其他一些调用.然后将响应返回到A类。
因此,问题是当类B方法update()将响应返回到A类方法callAndUpdateInB()时,数据在db中被更新。但是,当我在B()类的update方法中调用myRepository.save()时,它应该更新它。
为什么会这样?
以供参考,只需查看这个虚拟示例
class A{
@Autowired
B b;
pu
我有一个组件,主要任务是返回一个Jedis实例,它看起来如下所示:
@Component
public class JedisConfig {
private Jedis jedis;
public JedisConfig() {
jedis = new Jedis("localhost", 6379);
}
public Jedis getJedis() {return jedis;}
}
然后,我使用Jedis实例在我的拦截器的preHandler中做一些事情:
public class AuthInterceptor
在访问Jedis时,我有时会遇到以下异常。
例外1:
java.lang.ClassCastException: java.lang.Long cannot be cast to [B
at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:204)
at redis.clients.jedis.Connection.getBulkReply(Connection.java:193)
at redis.clients.jedis.Jedis.get(Jedis.java:89)
例
我正在尝试执行rpush操作,但遇到以下错误:
redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:199) ~[jedis-2.9.0.jar:na]
at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40) ~[jedis-2.9.