redis - 如何维护 key-value 缓存
高洛峰
高洛峰 2017-04-21 10:56:32
0
3
820

做web,经常会用到key-value的缓存,虽然快,但缓存的维护是个问题,就拿sgementfault举例来说,如果我来做,首页的问题分页就涉及到
1.问题总数缓存
2.每页问题清单缓存

现在管理员删除了一个问题,那么为满足实时性,肯定需要更新缓存
1.问题总数缓存-1
2.每页问题清单缓存如何更新?
当然可以查数据库算出来,是否有这个必要?

这只是个例子,为了说明问题,为了更新一个缓存而造成了另外的数据库查询开销。在实际过程中,我经常用查询条件的组合作为key,这使得我在更新缓存时无从下手(虽然我自己手工维护了一个缓存key的清单,但难免会有遗漏,终归不是好办法)。但如果把缓存的key都定义死,则缓存的使用不是那么灵活。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(3)
Peter_Zhu

Il est recommandé de le gérer comme ceci :

1. Cachez le nombre total de questions

$memcached->increment('sum', $sum);

Référence : http://www.php.net/manual/zh/memcache...

2. Comment mettre à jour le cache de la liste de questions de chaque page ?

Je n'y ai pas trop réfléchi. Si c'était moi, j'utiliserais probablement un end_id comme tampon de fin, puis je l'incrémenterais lorsque de nouvelles questions arriveraient. Il sera actualisé tous les 100+ résumés. l'essentiel est de regarder le volume. Sans le volume, ça ne marchera pas. Bon jugement (si on commence petit, il suffit de brosser la db une fois toutes les trois minutes, pas de problème)

洪涛

1. Il est bon d'utiliser memcache incr/decr fourni par @jawa pour mettre en cache le nombre total de questions
2. Une liste de questions sur chaque page. Pour cela, vous n'avez pas besoin de maintenir la liste mais seulement de mettre en cache le contenu de la question. La liste elle-même peut être vérifiée à partir de la base de données. En effet, comme le dit @jawa, cela dépend de la quantité. Il existe de nombreuses solutions pour les détails. Il existe des méthodes très grossières, par exemple, la liste elle-même est directement vérifiée à partir de la base de données, comme mentionné ci-dessus. Il existe également des méthodes très fines, par exemple, le transfert de contenu et le nombre de fichiers. les commentaires sur Sina Weibo sont obtenus deux fois et découplés. Changements de contenu (moins) et changements de nombre (fréquemment)

.
Peter_Zhu

L'objectif principal de l'utilisation du cache est de réduire la pression sur la base de données. Il n'est pas raisonnable de mettre à jour le cache trop fréquemment.
1. Abandonnez les performances en temps réel et mettez à jour le cache lorsque les données atteignent un certain seuil défini.
2. Utilisez l'indexation incrémentielle en temps réel des moteurs de recherche tels que sphinx.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal