gpt4 book ai didi

java - 使用spring boot从redis读取字符串

转载 作者:可可西里 更新时间:2023-11-01 11:24:31 26 4
gpt4 key购买 nike

我已经使用 redis-as below 在 redis 中设置了一个键

redis 127.0.0.1:6379> set 100.vo.t1 '{"foo": "bar", "ans": 42}'
OK

redis 127.0.0.1:6379> get 100.vo.t1
"{\"foo\": \"bar\", \"ans\": 42}"

但现在我正在尝试读取相同的 usin Spring boot 和 Jedis,但值是 null

存储库

@Repository
public class TemplateRepositoryImpl implements TemplateRepository {

private ValueOperations<String, Object> valueOperations;
private RedisTemplate<String, Object> redisTemplate;

@Autowired
public TemplateRepositoryImpl(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}

@PostConstruct
private void init() {
valueOperations = redisTemplate.opsForValue();
}

@Override
public String getTemplateSequenceinString(String key) {
System.out.println("the key recieved is " + key);
return (String) valueOperations.get(key);
}

}

Controller

@Controller
@RequestMapping("/ts")
public class MainController {

@Autowired
private TemplateRepository tmpl;

@GetMapping("/initiate/{templateName}")
public String getTemplate(Model model, @PathVariable("templateName") String templateName) throws IOException {
String key = "100.vo.t1" ;

System.out.println("The answer is "+tmpl.getTemplateSequenceinString(key));

return templateName;
}
}

Redis配置

@Configuration
@ComponentScan("com.ts.templateService")
public class RedisConfig_1 {

@Bean
JedisConnectionFactory jedisConnectionFactory() {
JedisConnectionFactory jedisConFactory
= new JedisConnectionFactory();
jedisConFactory.setHostName("localhost");
jedisConFactory.setPort(6379);
return jedisConFactory;
}

@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
}

最佳答案

这里的关键是SerializerRedisTemplate默认的序列化器是JdkSerializationRedisSerializer,你应该使用StringRedisSerializer .

@Bean
public RedisTemplate<String, Object> redisTemplate() {

RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setDefaultSerializer(new StringRedisSerializer()); // set here
template.setConnectionFactory(jedisConnectionFactory());
return template;
}

关于java - 使用spring boot从redis读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51017497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com