面试题答案
一键面试数据一致性问题
- 缓存数据未及时更新
- 产生原因:在并发环境下,不同客户端可能同时对不同数据库进行读写操作。若一个客户端在数据库1更新了数据,同时另一个客户端从数据库2读取数据,由于Redis不同数据库之间数据不实时同步,可能导致读取到旧数据。
- 跨库事务一致性问题
- 产生原因:Redis不支持跨数据库的事务操作。如果应用逻辑涉及在多个数据库间进行数据操作,以实现某种业务一致性,并发情况下可能出现部分操作成功,部分操作失败,破坏数据整体一致性。例如,在数据库1记录订单信息,在数据库2记录库存变更,若并发操作导致库存变更成功但订单记录失败,就会出现数据不一致。
资源竞争问题
- CPU资源竞争
- 产生原因:当多个客户端频繁进行数据库切换操作并执行命令时,Redis服务器需要为每个操作分配CPU时间片进行处理。由于CPU资源有限,大量并发的数据库切换和命令执行请求会导致CPU竞争,影响操作响应时间。
- 内存资源竞争
- 产生原因:Redis将数据存储在内存中,不同数据库共享服务器内存资源。并发进行数据库切换操作时,如果新切换的数据库需要加载大量数据到内存,可能会导致内存紧张。例如,当系统内存使用率已经很高时,一个客户端从数据库1切换到数据库2,而数据库2的数据量较大,可能会引发内存不足,甚至导致Redis服务器性能下降或崩溃。