我目前正在开发两个严重依赖 MySQL 数据库的 iOS 应用程序。它们每个都有自己的 API,由各自的应用程序请求,这些应用程序运行相关查询,请求来自 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 ?,?
这些查询显然需要时间。尤其是后者,因为它会导致性能强度。
许多服务在其数据库旁边使用缓存层来提高性能。例如:
- 内存缓存
- 雷迪斯
- 和更多。
我的问题是,关于查询,什么时候应该使用缓存,使用缓存有什么好处?
谢谢,
最大限度!