如何从Redis缓存中读取数据并在Java中查询?

5f0d552i  于 9个月前  发布在  Redis
关注(0)|答案(2)|浏览(86)

我是Redis缓存的新手,我使用核心或普通Java,而不是Sping Boot 来与Redis缓存交互。我能够使用jedis客户端连接到redis缓存,但不知道如何使用两个键的组合检索数据,我在spring Boot 中找到了一种方法,如下所示,但我无法在plain java中找到相同的方法,请为我指出一些来源,我无法在redis文档中找到任何说明,也围绕着这一点

@Cacheable(value = "items", key = "#id")
public Item getItem(Integer id) {
    Item item = itemRepository.findById(id).orElseThrow(RuntimeException::new);
    logger.info("Loading data from DB {}", item);
    return item;
}
6mzjoqzu

6mzjoqzu1#

我使用这种方式从Redis缓存中读取数据:

@Autowired
private UserRepository userRepository;

@Cacheable(value = "users", key = "#userId", unless = "#result.followers < 12000")
@RequestMapping(value="/{userId}", method = RequestMethod.GET)
public User getUser(@PathVariable String userId) {
  LOG.info("Getting user with ID {}.", userId);
  return userRepository.findOne(Long.valueOf(userId));
}
doinxwow

doinxwow2#

在普通的java中,创建一个RedisTemplate对象,然后使用它来查询你的信息。

public JedisConnectionFactory jedisConnectionFactory() {
    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
    config.setUsername(username);
    config.setPassword(password);
    config.setDatabase(db);
    return new JedisConnectionFactory(config);
}

public RedisTemplate<?, ?> redisTemplate() {
    RedisTemplate<?, ?> template = new RedisTemplate<>();
    template.setConnectionFactory(jedisConnectionFactory());
    template.setKeySerializer(new GenericToStringSerializer<String>(String.class));
    template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    return template;
}

例如
redisTemplate.opsForValue().add("key", "value")

相关问题