Redis est désormais largement utilisé sur Internet. Son utilisation varie selon les entreprises. Cependant, il existe généralement des problèmes de cohérence du stockage et de la mise en cache des données. Voici quelques solutions matures et pratiques.
Méthode 1 :
La base de données enregistre les données, Redis ne persiste pas Après le démarrage de Redis, le chargement des données à partir du la base de données n'est pas requise Les demandes de lecture qui nécessitent une forte cohérence et des performances en temps réel sont traitées par Redis. Les demandes de lecture qui nécessitent une forte cohérence et des performances en temps réel sont traitées par la base de données. Il existe deux méthodes de traitement pour les demandes d'écriture, qui sont traitées par. la base de données. (Apprentissage recommandé : Tutoriel vidéo Redis)
L'application écrit d'abord dans la base de données, puis met à jour redis
L'application écrit d'abord dans la base de données, et puis d'autres démons se synchronisent avec Redis
Avantage : le démarrage de Redis n'a pas besoin de gérer les incohérences entre les données Redis et la base de données
Inconvénient : le démarrage de Redis exerce beaucoup de pression de lecture sur la base de données
Méthode 2 :
La base de données et Redis gèrent respectivement différents types de données et les exigences de traitement de la base de données Données fortement cohérentes et en temps réel, telles que les données financières et les données de transaction ; qui ne nécessite pas une forte cohérence et des performances en temps réel, comme les publications les plus populaires du site Web
synchronisation des données Redis et MySQL, le niveau de code peut être à peu près le suivant Faire : Lire : Lire redis->Non , lisez mysql->Réécrivez les données mysql dans redis Écrivez : écrivez mysql->Succès, écrivez redis
La concurrence n'est pas élevée : Lisez : lisez redis- >Non, lisez mysql->Écrivez le données mysql vers redis, ou récupérez-les directement depuis redis s'il y en a ; écrivez : écrivez mysql->success, puis écrivez dans redis
Situation de concurrence élevée : read : Lire redis->Non, read mysql->Réécrivez les données MySQL dans redis, s'il y en a, récupérez-les directement depuis redis Écrivez : si elles sont asynchrones, écrivez-les d'abord dans le cache redis, puis renvoyez-les directement aux actions régulières ou spécifiques. enregistré sur MySQL, qui peut être mis à jour plusieurs fois et enregistré une fois
--Remarque : si vous écrivez Redis, vous devez utiliser des transactions Redis :
127.0.0.1:6379> WATCH id OK 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> INCR id QUEUED 127.0.0.1:6379> EXEC 1) (integer) 342183 127.0.0.1:6379>
Méthode 3 :
Utiliser le script lua : redis ne permet qu'un seul script de s'exécuter en même temps lors de l'utilisation de lua, ce qui est conforme à l'atomicité des transactions, mais un script lua ne peut pas être exécuté trop longtemps, sinon il bloquera
EVAL
La commande EVAL exécute et évalue les scripts Lua.
Syntaxe :
EVAL script numkeys key [key …] arg [arg …]
Un exemple vaut mille mots d'explication
script lua脚本内容 注意的是脚本不应该是Lua函数。 numkeys 表示指定键名参数的个数。 key [key ...] 表示脚本对应的key值列表 在脚本中可以使用KEYS[1] KEYS[2] KEYS[3]KEYS[n] n从1开始 。 arg [arg ...] 命名行中传递的参数列表 在脚本中可以使用ARGV[1] ARGV[2] ARGV[3]ARGV[n] n从1开始 。
L'exécution du script ci-dessus renvoie
eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 id name 3 mytest
Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne Tutoriel de démarrage de Redis pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!