我們正在開發一個使用 Redis 服務器作為快取服務器的應用程式。
所以我們做的是當客戶端請求API時,它首先去Redis獲取資料,如果沒有資料它回傳null,那么第二步去MYSQL資料庫獲取資料,但是當我們失去Redis連接時它回傳的問題絕地連接例外。如果沒有連接,我們是否可以在配置中處理此例外以回傳 null 而不是例外?
@Bean
JedisConnectionFactory jedisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
@Bean
HashOperations hashOperations() {
return redisTemplate().opsForHash();
}
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Autowired
private HashOperations hashOperations;
public void save(User user) {
hashOperations.put("USER",user.getId(),user);
}
public List<User> getAll() {
Collection users = hashOperations.entries("USER").values();
if(CollectionUtils.isEmpty(users)){
// get data from data base
}
return (List<User>) users;
}
uj5u.com熱心網友回復:
也許使用try塊?
try {
// your Redis operations
} catch (JedisConnectionException jce) {
return null;
}
uj5u.com熱心網友回復:
private static boolean isConnected() {
try {
// get any fake key to test connection
ApplicationContextConfig.getBean(HashOperations.class).get("TEST", 1);
return true;
} catch (Exception ex) {
return false;
}
}
請注意,例外可能由
RedisConnectionFailureException或
JedisConnectionException
所以我做到了Exception。
此方法在任何 Redis 操作之前呼叫以首先測驗連接性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420919.html
標籤:
