U正在缓存项目列表,然后添加或更新或删除名为的方法。
方法1)
A-数据库中的数据更改。如果成功做B,C
B-从缓存中删除整个列表。
C-在第一次读取时重新缓存列表。
方法2)
A-数据库中的数据是否发生变化,如果成功,则为B B-对缓存的项目进行相同的更改,并节省更多时间。
方法(2)可能会导致讨厌的难以发现错误,因为数据来自BLL并直接放入缓存中,我不能假设在sproc中不会发生错误,我不担心数据库运行时错误,运行时错误会出现,但我担心无效数据,或错过计算。
我可以谨慎处理方法(2)吗?有没有“最佳实践”原则建议不做方法(2)?
答案 0 :(得分:2)
好吧,我个人不会这样做2.就像你自己说的那样,并发问题会导致讨厌的结果。
如果(1)不够“好”,我不会完全放弃(2)。
要考虑的因素:
答案 1 :(得分:1)
您还应该考虑是否可以从其他应用程序(绕过您的缓存)更改数据库中的数据。在这些情况下,第二种方法(2)可能导致向用户显示无效数据。
我建议测量两种解决方案的性能,并且只有在与第一种解决方案相比具有明确定义的好处时才使用第二种方法。