先更新数据库.在删除缓存.
在高并发下还是有不一致的现象.
比如:线程a查询.正准备将数据写入redis时.线程b更新了数据库.然后执行了删除缓存的操作.这个时候线程b才吧旧的值写入redis这个时候就出现了不一致现象.
不过这种现象不常出现.因为一次写操作的时间一般都大于读操作的时间.
解决方案.延迟双删. 先删除缓存.在更新数据库.在等待大于读数据的耗时.在删除缓存. 如果删除失败则需要重复删除. 这样就保证了redis和mysql数据的一致性
先更新数据库.在删除缓存.
在高并发下还是有不一致的现象.
比如:线程a查询.正准备将数据写入redis时.线程b更新了数据库.然后执行了删除缓存的操作.这个时候线程b才吧旧的值写入redis这个时候就出现了不一致现象.
不过这种现象不常出现.因为一次写操作的时间一般都大于读操作的时间.
解决方案.延迟双删. 先删除缓存.在更新数据库.在等待大于读数据的耗时.在删除缓存. 如果删除失败则需要重复删除. 这样就保证了redis和mysql数据的一致性