Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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数据redis ping工作,键在那里,没有返回数据_Spring_Redis_Spring Data - Fatal编程技术网

Spring数据redis ping工作,键在那里,没有返回数据

Spring数据redis ping工作,键在那里,没有返回数据,spring,redis,spring-data,Spring,Redis,Spring Data,这是我第一个使用SpringDataRedis的应用程序,我想我已经很好地理解了这些概念(我在过去多次将JdbcTemplate用于RDBMS)。下面是正在发生的事情 我已经使用JedisConnectionFactory设置了Redis模板,并且能够成功ping Redis服务器。然而,我无法从服务器上获得最简单的数据响应,而且我担心我遗漏了一些基本的信息,而到目前为止,我还无法从文档中发现这些信息 下面是我的bean.xml文件的Redis部分: <!-- Redis DAO stuf

这是我第一个使用SpringDataRedis的应用程序,我想我已经很好地理解了这些概念(我在过去多次将JdbcTemplate用于RDBMS)。下面是正在发生的事情

我已经使用JedisConnectionFactory设置了Redis模板,并且能够成功ping Redis服务器。然而,我无法从服务器上获得最简单的数据响应,而且我担心我遗漏了一些基本的信息,而到目前为止,我还无法从文档中发现这些信息

下面是我的bean.xml文件的Redis部分:

<!-- Redis DAO stuff -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisConnectionFactory"/>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.url}" p:port="${redis.port}" p:database="0" />
请注意,从Redis返回的TestVal是如何为null的,但如果对该服务器的0(零)数据库使用Redis cli,则会得到以下响应:

127.0.0.1:6379> get akey
"yo mama"
“yo mama”是我期待的回报


@mp911de我在这里回复是因为回复的时间不够长,无法显示细节。 我担心,当我将代码更改为以下内容时(没有其他更改),我仍然会遇到同样的问题


注意:添加StringRedisSerializer作为RedisTemplate的默认序列化程序。感谢您的努力。

RedisOperations
用于转换为Redis数据结构值。序列化程序默认为
JdkSerializationRedisSerializer
。JDK序列化程序将
字符串
对象转换为与ASCII或UTF-8不兼容的Java序列化表示形式。查看文档,您可能对
StringRedisSerializer
感兴趣。序列化程序需要在
RedisTemplate
中设置:

@Bean
RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();

    redisTemplate.setDefaultSerializer(new StringRedisSerializer());

    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.afterPropertiesSet();
    return redisTemplate;
}
@Bean
RedisTemplate RedisTemplate(RedisConnectionFactory RedisConnectionFactory){
RedisTemplate RedisTemplate=新RedisTemplate();
setDefaultSerializer(新的StringRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.AfterPropertieSet();
返回模板;
}

是的,您需要一个序列化程序,以便redisTemplate返回数据。对于绝地武士,你不需要它

@Bean(name = "redisTemplate")
public RedisTemplate<String, String> redisTemplate() {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
    redisTemplate.setConnectionFactory(redisConnectionFactory());
    redisTemplate.setDefaultSerializer(new StringRedisSerializer());
    return redisTemplate;
}
@Bean(name=“redisTemplate”)
公共RedisTemplate RedisTemplate(){
RedisTemplate RedisTemplate=新RedisTemplate();
setConnectionFactory(redisConnectionFactory());
setDefaultSerializer(新的StringRedisSerializer());
返回模板;
}

除了@mp911de的帮助之外,我发现这也很有帮助。关键的更改似乎是在XMLBean配置文件中设置序列化程序。从那以后,他工作得很有魅力。
public String getTestVal() {
    template.setDefaultSerializer(new StringRedisSerializer());
    template.afterPropertiesSet();
    logger.debug("getTestVal() function called++++++++++++++++++++");
    template.getConnectionFactory().getConnection().select(0);
    logger.debug("22222222222222");
    String pingResult =  template.getConnectionFactory().getConnection().ping();
    logger.debug("333333333333333");
    logger.debug("REDIS PING RESULT: " + pingResult);
    logger.debug("444444444444444");
    logger.debug("HasKey Result: " + template.hasKey("akey"));
    logger.debug("555555555555555");
    Object testVal = template.opsForValue().get("akey");
    logger.debug("TestVal returned from REdis: " + testVal);

    return null;
}
@Bean
RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();

    redisTemplate.setDefaultSerializer(new StringRedisSerializer());

    redisTemplate.setConnectionFactory(redisConnectionFactory);
    redisTemplate.afterPropertiesSet();
    return redisTemplate;
}
@Bean(name = "redisTemplate")
public RedisTemplate<String, String> redisTemplate() {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
    redisTemplate.setConnectionFactory(redisConnectionFactory());
    redisTemplate.setDefaultSerializer(new StringRedisSerializer());
    return redisTemplate;
}