Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Data Redis-支持命令子通道_Redis_Spring Data_Spring Data Redis - Fatal编程技术网

Spring Data Redis-支持命令子通道

Spring Data Redis-支持命令子通道,redis,spring-data,spring-data-redis,Redis,Spring Data,Spring Data Redis,RedisTemplate不支持PUBSUB CHANNELS命令。因此,一种方法是执行以下操作 private JedisPool getJedisPool(){ if (jedisPool == null) jedisPool = new JedisPool(redisConnectionFactory.getPoolConfig(), redisConnectionFactory.getHostName(), redisConnectionFactor

RedisTemplate不支持PUBSUB CHANNELS命令。因此,一种方法是执行以下操作

   private JedisPool getJedisPool(){
        if (jedisPool == null)
        jedisPool = new JedisPool(redisConnectionFactory.getPoolConfig(), redisConnectionFactory.getHostName(), redisConnectionFactory.getPort());
        return jedisPool;
    }

    public Integer getNumChannels() {
        Integer count = 0;
        try (Jedis jedis = getJedisPool().getResource()) {
            List<String> channels = jedis.pubsubChannels("user.*");
            count = channels == null ? 0 : channels.size();
        } catch (Exception e) {
            logger.error("unable to get user count", e);
        } finally {
            //getJedisPool().close(); //No need for close or returnResource()
        }
    }
private-JedisPool getJedisPool(){
if(spool==null)
jedisPool=newjedispool(redisConnectionFactory.getPoolConfig()、redisConnectionFactory.getHostName()、redisConnectionFactory.getPort());
返回滑阀;
}
公共整数getNumChannel(){
整数计数=0;
试试看(绝地武士=getJedisPool().getResource()){
列表频道=jedis.pubsubChannels(“用户。*”);
count=channels==null?0:channels.size();
}捕获(例外e){
logger.error(“无法获取用户计数”,e);
}最后{
//getJedisPool().close();//不需要close或returnResource()
}
}

这是建议的方法吗?

这取决于你要去哪里。 如果您计划仅将其用于自己的应用程序,则可以从
JedisConnectionFactory
获取
JedisConnection
,并使用底层
Jedis
实例调用命令

JedisConnectionFactory factory = …

// assuming you're using Redis Standalone or Redis Sentinel
RedisConnection connection = factory.getConnection();
try {
    if (connection instanceof JedisConnection) {
        Jedis jedis = ((JedisConnection) connection).getNativeConnection();
        List<String> strings = jedis.pubsubChannels("…");
    }
} finally {
    connection.close();
}
JedisConnectionFactory=…
//假设您使用的是Redis Standalone或Redis Sentinel
RedisConnection=factory.getConnection();
试一试{
if(绝地连接的连接实例){
绝地=((绝地连接)连接);
列表字符串=jedis.pubsubChannels(“…”);
}
}最后{
connection.close();
}

请注意,这仅适用于Redis Standalone/Redis Sentinel,而不适用于Redis Cluster,因为
JedisCluster
不会公开
pubsubChannels
,这取决于您的目的地。 如果您计划仅将其用于自己的应用程序,则可以从
JedisConnectionFactory
获取
JedisConnection
,并使用底层
Jedis
实例调用命令

JedisConnectionFactory factory = …

// assuming you're using Redis Standalone or Redis Sentinel
RedisConnection connection = factory.getConnection();
try {
    if (connection instanceof JedisConnection) {
        Jedis jedis = ((JedisConnection) connection).getNativeConnection();
        List<String> strings = jedis.pubsubChannels("…");
    }
} finally {
    connection.close();
}
JedisConnectionFactory=…
//假设您使用的是Redis Standalone或Redis Sentinel
RedisConnection=factory.getConnection();
试一试{
if(绝地连接的连接实例){
绝地=((绝地连接)连接);
列表字符串=jedis.pubsubChannels(“…”);
}
}最后{
connection.close();
}
请注意,这仅适用于Redis Standalone/Redis Sentinel,但不适用于Redis Cluster,因为
JedisCluster
不公开
pubsubChannels