1つは、MysqlとRedisのエラー報告メカニズムです。
mysqlに既存のデータを追加する場合:
dataRepository.save(data);
エラーが報告されました:キー「xxx」のエントリ「データ」が重複しています。
redisで既存のデータを追加する場合:
redisService.setValue(data);
コンテンツは追加されず、エラーは報告されません。
2つ目は、バインディングトランザクションをmysqlとredisデータ操作に追加することです。
まず、RedisServiceでトランザクション関数を開きます。
private void initStringRedisTemplate(){ stringRedisTemplate.setKeySerializer(keySerializer); stringRedisTemplate.setHashKeySerializer(keySerializer); stringRedisTemplate.setEnableTransactionSupport(true); //開启事务功能 }
次に、mysqlおよびredisデータ操作に関するコメントを追加します。
@Transactional(rollbackFor = Exception.class)
このとき、mysqlデータベースの操作中にエラーが報告された場合、以前に操作されたredisデータもロールバックされます。