redis 缓存策略
在使用redis缓存数据的过程中,设计缓存思路如下:
获取数据时,先从缓存中获取数据,如果获取到的数据为空,则查询数据库,然后先将查询到的数据缓存到redis,再返回数据
但现在有两个问题请教一下大家:
如果数据库中查询的结果为空,那么不会缓存数据,因此也无法从缓存中获取数据,那么每次获取数据时都会进行一个数据库查询,这个应该怎么优化?
数据进行更新时,缓存应该怎么处理?
对这两个问题我有一点不成熟的想法,现提出来恳请大家指点一下是否可行以及是否有更好的处理方式:
对于第一个问题,如果从数据库查询没有获取到数据,那么缓存一个固定的默认值(如字符串:'nodata')表示没有数据,下次从缓存中获取数据时,得到这个固定表示没有数据的值时就直接返回空,而不用再次查询数据库
对于第二个问题,当前想法是,如果更新的数据是不是特别重要的话,那么将数据写入数据库后直接更新缓存中对应的数据,下次获取数据时不用查询数据库就能直接获取到最新的数据,但如果更新的数据是特别重要的(比如:金钱),那么将数据写入数据库后直接清除对应的缓存,下次再获取数据的时候就需要查询数据库获取最新的数据。
回复内容:
在使用redis缓存数据的过程中,设计缓存思路如下:
获取数据时,先从缓存中获取数据,如果获取到的数据为空,则查询数据库,然后先将查询到的数据缓存到redis,再返回数据
但现在有两个问题请教一下大家:
如果数据库中查询的结果为空,那么不会缓存数据,因此也无法从缓存中获取数据,那么每次获取数据时都会进行一个数据库查询,这个应该怎么优化?
数据进行更新时,缓存应该怎么处理?
对这两个问题我有一点不成熟的想法,现提出来恳请大家指点一下是否可行以及是否有更好的处理方式:
对于第一个问题,如果从数据库查询没有获取到数据,那么缓存一个固定的默认值(如字符串:'nodata')表示没有数据,下次从缓存中获取数据时,得到这个固定表示没有数据的值时就直接返回空,而不用再次查询数据库
对于第二个问题,当前想法是,如果更新的数据是不是特别重要的话,那么将数据写入数据库后直接更新缓存中对应的数据,下次获取数据时不用查询数据库就能直接获取到最新的数据,但如果更新的数据是特别重要的(比如:金钱),那么将数据写入数据库后直接清除对应的缓存,下次再获取数据的时候就需要查询数据库获取最新的数据。
你需要一个方式(比如天然可空类型或者和类型)来区分这两个情况。比如有数据的时候里边存的是一个 JSON 化的列表
[{...}, {...}]
,那么没数据时自然存[]
了。总之没有冲突就行。缓存更新的套路 | 酷 壳 - CoolShell.cn
楼上说的很有道理。
你可以参考下文件缓存的思路,
thinkphp文件缓存采取的是serialize(valle)去保存数据,文件名作为key名。清除缓存,直接set(null)来实现。
缓存只是为了查询时候的方便,减少mysql的访问次数,至于缓存更新的问题得靠代码去实现。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP est principalement la programmation procédurale, mais prend également en charge la programmation orientée objet (POO); Python prend en charge une variété de paradigmes, y compris la POO, la programmation fonctionnelle et procédurale. PHP convient au développement Web, et Python convient à une variété d'applications telles que l'analyse des données et l'apprentissage automatique.

Le processus de démarrage de MySQL dans Docker se compose des étapes suivantes: Tirez l'image MySQL pour créer et démarrer le conteneur, définir le mot de passe de l'utilisateur racine et mapper la connexion de vérification du port Créez la base de données et l'utilisateur accorde toutes les autorisations sur la base de données

Le rôle principal de MySQL dans les applications Web est de stocker et de gérer les données. 1.MySQL traite efficacement les informations utilisateur, les catalogues de produits, les enregistrements de transaction et autres données. 2. Grâce à SQL Query, les développeurs peuvent extraire des informations de la base de données pour générer du contenu dynamique. 3.MySQL fonctionne basé sur le modèle client-serveur pour assurer une vitesse de requête acceptable.

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.

PHP convient au développement Web et au prototypage rapide, et Python convient à la science des données et à l'apprentissage automatique. 1.Php est utilisé pour le développement Web dynamique, avec une syntaxe simple et adapté pour un développement rapide. 2. Python a une syntaxe concise, convient à plusieurs champs et a un écosystème de bibliothèque solide.

PHP convient aux systèmes de développement Web et de gestion de contenu, et Python convient aux scripts de science des données, d'apprentissage automatique et d'automatisation. 1.Php fonctionne bien dans la création de sites Web et d'applications rapides et évolutifs et est couramment utilisé dans CMS tel que WordPress. 2. Python a permis de manière remarquable dans les domaines de la science des données et de l'apprentissage automatique, avec des bibliothèques riches telles que Numpy et Tensorflow.

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.
