我目前正在開發兩個嚴重依賴MySQL數據庫的iOS應用程序。他們每個都有自己的API,這是由相應的應用程序請求的,它運行相關的查詢請求來自MySQL數據庫的數據。爲什麼使用MySQL數據庫緩存?
這些查詢被基於簡單,用戶或 '對象' 而變化:
SELECT `username`, `id`, `full_name` FROM `users` WHERE `id` = 1
INSERT INTO `users` (`full_name`, `username`, `email`, `password`, `signup_method`, `latitude`, `longitude`) VALUES (?, ?, ?, ?, ?, ?, ?)"
SELECT q.*, (SELECT COUNT(a.qid) FROM answers as a WHERE qid=q.id) AS a_count FROM questions as q ORDER BY a_count DESC LIMIT 1, 10
到基於位置的:
SELECT (6371 * acos(cos(radians(?)) * cos(radians(latitude)) * cos(radians(longitude) - radians(?)) + sin(radians(?)) * sin(radians(latitude)))) AS distance FROM `users` HAVING distance <= 5 ORDER BY points DESC
SELECT * , (6371 * acos(cos(radians(latitude)) * cos(radians({$values['latitude']})) * cos(radians({$values['longitude']}) - radians(longitude)) + sin(radians(latitude)) * sin(radians({$values['latitude']})))) AS distance FROM `questions` HAVING distance <= ? ORDER by distance LIMIT ?,?
這些查詢顯然需要時間。特別是後者由於其引起的性能強度。
許多服務在其數據庫旁邊使用緩存層來提高性能。 E.g:
- Memcachd
- Redis的
- 多。
我的問題是,何時應該使用緩存,以及使用緩存有什麼好處?
謝謝,
Max!
這真是一個很好的答案。 +1 – Fluffeh 2012-07-28 02:08:46
謝謝。儘管擴大了一點。 :-) – 2012-07-28 02:16:32
明智的答案,令人難以置信的詳細和重點。非常感謝花時間回答! – 2012-07-28 02:25:24