Comment implémenter memcached en utilisant une base de données?
-
05-07-2019 - |
Question
Autant que je sache, memcached fonctionne en mémoire et n'a pas de sauvegarde permanente.
Actuellement, mon équipe n'est pas encore prête à utiliser memcached.
Je prévois donc d'écrire une alternative simple basée sur une base de données.
Ma question est à peu près semblable à cette autre question
Connexions simultanées dans une batterie de serveurs Web
Mon application Web a des points d'entrée (connexion) et de sortie (déconnexion) clairs.
Le plan:
- Lors de la connexion, je vais ajouter l'ID utilisateur dans un tableau.
- À la déconnexion, je supprimerai la ligne contenant l'ID utilisateur.
Problèmes:
Existe-t-il une méthode bien utilisée pour expirer une ligne dans Mysql? Par méthode, je veux dire une meilleure pratique. Une fois le délai écoulé, la ligne est supprimée.
La solution
il existe déjà une variante persistante pour memcache:
consultez également le cabinet de Tokyo: http://1978th.net/ qui est censé être beaucoup plus rapide
R
EDIT: relire votre question. Laissez-moi ajouter ceci: La façon de mettre en place une heure est d’ajouter une colonne d’horodatage à votre base de données. La prochaine fois que vous obtiendrez l'élément mis en cache, vérifiez si l'horodatage est trop ancien, supprimez l'entrée à ce moment-là, obtenez une nouvelle copie et remettez-la dans le cache de la base de données avec un horodatage actuel.
C’est également ce que fait Memcache
Autres conseils
Vous ne savez pas ce que vous voulez dire par
Existe-t-il une méthode bien utilisée pour l'expiration du délai une ligne dans Mysql?
nous utilisons Memcache comme moyen de mise en cache à base d’objets, il peut être défini sur une valeur à heure fixe
par exemple.;
MemcachedClient c= // get memcachedclient reference...
if (c != null) {
c.set(key, timeToLiveInSeconds, objectToCache);
}
Après une période spécifiée, il sera automatiquement supprimé