我有一个用户“通知”的应用程序认为 SO 或 facebook 或 twitter。但是,由于通知不一定会在每个页面视图上发生变化,我决定将它们保存在 memcached 中。
def get_notification
if current_user
mc = Dalli::Client.new('localhost:11211')
require_dependency 'notification.rb'
@new_notification = mc.get(current_user.id.to_s+'new_notification')
if @new_notification == nil
@new_notification = Notification.getNew(current_user.id)
mc.set(current_user.id.to_s+'notification',@new_notification)
end
end
end
我忽略了这个实现中的明显缺陷。一旦通知被加载,它们将永远不会被刷新,直到用户注销或缓存条目过期。一种方法是在发生新通知的事件时取消用户的缓存条目。这将强制向数据库发出新请求。还有其他方法可以实现吗?