打算用redis来做缓存,但是之前没弄过类似的东西,有个疑惑就是用什么东西来让redis里的数据更新到mysql或者sqlite数据库中去呢? 是需要自己写脚本定期执行更新?还是redis能自带一些功能?
我打算每10分钟或者一定的时间内,或者每天固定的时候比如半夜2点,把redis的数据更新到mysql或者sqlite中。 有什么简单的办法嘛。
学习是最好的投资!
對於你的情況,如果你可以接受定期從redis導入到mysql,那基本上表示你的業務就不需要mysql,因為redis不僅僅是緩存,塞給它的數據是持久化到硬盤的,你下次直接從redis讀出來就行了。
至於緩存,一般都是讀緩存(寫緩存實現起來很羅嗦,而且也不那麼靠譜),與數據庫的同步策略需要添加到自己的代碼邏輯裏。
假設你原先的代碼邏輯是這樣:
$data = get_from_db($condition);
現在需要將get_from_db改成這樣
function get_from_db($condition) { $data = get_from_cache($condition); if (!$data) { $data = get_from_db_directly($condition); set_to_cache($condition, $data); } return $data; }
對於你的情況,如果你可以接受定期從redis導入到mysql,那基本上表示你的業務就不需要mysql,因為redis不僅僅是緩存,塞給它的數據是持久化到硬盤的,你下次直接從redis讀出來就行了。
至於緩存,一般都是讀緩存(寫緩存實現起來很羅嗦,而且也不那麼靠譜),與數據庫的同步策略需要添加到自己的代碼邏輯裏。
假設你原先的代碼邏輯是這樣:
現在需要將get_from_db改成這樣