标签: jedis

在将Jedis与Spring Data一起使用时,为什么在Redis中使用奇怪的密钥存储数据?

我正在使用Spring Data Redis和Jedis.我试图用密钥存储哈希vc:${list_id}.我能够成功插入redis.但是,当我使用redis-cli检查按键时,我看不到按键vc:501381.相反,我明白了\xac\xed\x00\x05t\x00\tvc:501381.

为什么会发生这种情况?如何更改?

redis jedis spring-data

42
推荐指数
4
解决办法
3万
查看次数

Jedis Pool如何运作?

我正在使用Jedis池来管理与Redis服务器的连接.我的示例代码如下:

public Set<String> getTopArticleList(int start, int end) {
    Set<String> list = null;
    Jedis j = JedisFactory.getInstance().getJedisPool().getResource();
    Pipeline pipe = j.pipelined();
    try {
        // do stuff with redis
        pipe.sync();
    } catch (JedisConnectionException jex) {
        JedisFactory.getInstance().getJedisPool().returnBrokenResource(j);
    } finally {
        JedisFactory.getInstance().getJedisPool().returnResource(j);
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

用于创建和检索Jedis池的代码:

class JedisFactory {
    private static JedisPool jedisPool;
    public JedisFactory() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        jedisPool = new JedisPool(
            poolConfig,
            RedisDBConfig.HOST,
            RedisDBConfig.PORT,
            RedisDBConfig.TIMEOUT,
            RedisDBConfig.PASSWORD
        );
    }

    public JedisPool getJedisPool() {
        return jedisPool;
    }

    public static JedisFactory getInstance() …
Run Code Online (Sandbox Code Playgroud)

java connection-pooling jedis

32
推荐指数
1
解决办法
5万
查看次数

Redisson vs Jedis为redis

现在我必须使用java客户端进行redis.我遇到过JedisRedisson.

编辑:重新定义,因为问题是基于意见.

哪个在速度方面更有效?任何基准?

哪个能够提供以下哪些?

  • 分布式锁(并更新地图中的一些键)

  • 自动密钥到期通知,但我希望仅由一组订户中的一个特定订户接收(类似于Apache Kafka中的消费者组概念).如何实现这一目标?

PS:请不要将其标记为重复.

java caching redis jedis redisson

32
推荐指数
1
解决办法
2万
查看次数

使用ShardedJedis和RedisTemplate

以下是从jedis github页面直接复制的Jedis文档:

List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
JedisShardInfo si = new JedisShardInfo("localhost", 6379);
si.setPassword("foobared");
shards.add(si);
si = new JedisShardInfo("localhost", 6380);
si.setPassword("foobared");
shards.add(si);
Run Code Online (Sandbox Code Playgroud)

然后,有两种使用方式ShardedJedis.直接连接或使用ShardedJedisPool.为了可靠运行,后者必须在多线程环境中使用.

2.a)直接连接:

ShardedJedis jedis = new ShardedJedis(shards);
jedis.set("a", "foo");
jedis.disconnect;
Run Code Online (Sandbox Code Playgroud)

2.b)汇集连接:

ShardedJedisPool pool = new ShardedJedisPool(new Config(), shards);
ShardedJedis jedis = pool.getResource();
jedis.set("a", "foo");
.... // do your work here
pool.returnResource(jedis);
.... // a few moments later
ShardedJedis jedis2 = pool.getResource();
jedis.set("z", "bar");
pool.returnResource(jedis);
pool.destroy();
Run Code Online (Sandbox Code Playgroud)

以上示例显示了如何使用ShardedJedis.

在我目前的设置中,我正在使用RedisTemplateJedisConnectionFactory.

我的问题是 …

java spring redis jedis

24
推荐指数
1
解决办法
1887
查看次数

Redis在多核CPU上的性能

我正在环顾redis,为我提供一个中间缓存存储,其中包含很多围绕集合操作的计算,例如intersection和union.

我查看了redis网站,发现redis不是为多核CPU设计的.我的问题是,为什么会这样?

此外,如果是,我们如何在多核CPU上使用redis 100%利用CPU资源.

cpu cpu-usage redis jedis

22
推荐指数
1
解决办法
2万
查看次数

不推荐使用JedisConnectionFactory setHostName

这将是我第一次将Spring连接到Redis.jedis连接工厂的文档:http://www.baeldung.com/spring-data-redis-tutorial

提供以下代码:

@Bean
JedisConnectionFactory jedisConnectionFactory() {
    JedisConnectionFactory jedisConFactory
            = new JedisConnectionFactory();

    jedisConFactory.setHostName("localhost");
    jedisConFactory.setPort(6379);
    return jedisConFactory;
}
Run Code Online (Sandbox Code Playgroud)

看起来很棒,但我的IDE告诉我setHostName和setPort方法已被弃用(即使我使用的是教程中的版本).

我想知道是否有人使用非弃用API调用的简单"获取弹簧数据连接到redis"示例?

redis jedis spring-data

22
推荐指数
2
解决办法
1万
查看次数

Jedis和生菜异步能力

我正在使用redis与Akka,所以我不需要阻止调用.生菜具有内置的异步未来调用.但是Jedis是Redis的推荐客户.如果我以正确的方式使用它们,有人可以告诉我.如果是这样哪一个更好.

JEDIS 我使用静态Jedis连接池来获取con并使用Akka将来的回调来处理结果.我关心的是当我使用另一个线程(可调用)来获取线程最终将阻塞结果的结果时.虽然生菜可能有一些更有效的方法来做到这一点.

 private final class OnSuccessExtension extends OnSuccess<String> {
            private final ActorRef senderActorRef;
            private final Object message;
            @Override
            public void onSuccess(String valueRedis) throws Throwable {
                log.info(getContext().dispatcher().toString());
                senderActorRef.tell((String) message, ActorRef.noSender());
            }
             public OnSuccessExtension(ActorRef senderActorRef,Object message) {
                    this.senderActorRef = senderActorRef;
                    this.message=message;
                }
        }
        ActorRef senderActorRef = getSender(); //never close over a future
            if (message instanceof String) {
        Future<String> f =akka.dispatch.Futures.future(new Callable<String>() {
                    public String call() {
                        String result;
                        try(Jedis jedis=JedisWrapper.redisPool.getResource()) {
                            result = jedis.get("name");
                        }
                        return result;
                    }
                }, ex);
                f.onSuccess(new …
Run Code Online (Sandbox Code Playgroud)

java asynchronous redis jedis lettuce

21
推荐指数
2
解决办法
2万
查看次数

无法从池中获取资源(SocketTimeoutException :)

我正在运行多个工作线程(大约10个)来访问redis Q中的数据.
因为我正在使用Jedis Client的 infinte timeout .

Jedis jedis = pool.getResource();
jedis.getClient().setTimeoutInfinite();  
Run Code Online (Sandbox Code Playgroud)

我仍然收到错误"无法从池中获取资源".堆栈跟踪如下所示.

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:22)
at Workers.Worker1.met1(Worker1.java:124)
at Workers.Worker1.work(Worker1.java:108)
at org.gearman.impl.worker.WorkerConnectionController$3.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)  

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
at redis.clients.jedis.Connection.connect(Connection.java:124)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:54)
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1657)
at redis.clients.jedis.JedisPool$JedisFactory.makeObject(JedisPool.java:63)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1188)
at redis.clients.util.Pool.getResource(Pool.java:20)
... 6 more  

Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java socketexception redis jedis

19
推荐指数
5
解决办法
5万
查看次数

Jedis可以获取/设置Java POJO吗?

我正在使用Jedis作为连接Redis服务器的Java客户端.

问题1:似乎没有方法来获取/设置Object <?扩展Serializable>?所有值必须是String或byte []?

其他客户端,如"JRedis"和Spymemcache(用于memcached服务器)可以.

问题2:如果我使用ShardedJedis,它无法设置身份验证/密码?而Jedis类可以(使用auth(String password)).

jedis

17
推荐指数
2
解决办法
2万
查看次数

寻找与Sentinel的Jedis的例子

我正在寻找一个使用redis哨兵的jedis的例子.我无法使用jedis设施进行哨兵,我找不到任何好的示例或文档.

redis sentinel jedis

15
推荐指数
2
解决办法
2万
查看次数