Qu'est-ce que Redis publier et s'abonner ?
J'ai pensé à utiliser le modèle de publication par abonnement de Redis pour résoudre le problème push~.
Quant à la description conceptuelle, je dois encore la mentionner plus ou moins :
什么是Redis发布订阅?Redis发布订阅是一种消息通信模式,发送者通过通道A发送消息message,订阅过通道A的客户端就可以接收到消息message。嗯度娘上面的解释要比我所说的好多了,而我所理解的就是:所谓的订阅发布模式,其实和我们看电视,听广播差不多,在我们没有调台(换频道)的时候,那个频道也是在传递消息的(发布)。我们换到那个频道上(订阅)就能接收到消息了。是的,虽然可能有些不恰当~
Explication
本文中示例采用了三个客户端,以“品”字形排列,由上至下,由左至右分别为客户端1(c1),客户端2(c2),客户端3(c3).特此说明。
Commandes d'abonnement et de publication Redis
Tout d'abord, permettez-moi de préciser qu'en ce qui concerne la construction du serveur Redis, veuillez vérifier vous-même les informations pertinentes pour créer l'environnement
J'ai entendu dire qu'il n'y avait que 6 commandes simples pour publier et s'abonner dans Redis. C'est-à-dire :
Modèle PSUBSCRIBE [motif ...]
Abonnez-vous à une ou plusieurs chaînes qui correspondent au format du modèle
PUBLIER le message de la chaîne
Publier le message sur la chaîne
Sous-commande PUBSUB [argument [argument ...]]
Afficher l'état du système d'abonnement et de publication
PUNSUBSCRIBE [modèle [modèle ...]]
Se désabonner de toutes les chaînes qui correspondent au format
S'ABONNER à la chaîne [chaîne ...]
Abonnez-vous à une ou plusieurs chaînes
Désabonner [chaîne [chaîne ...]]
Se désabonner de la chaîne
Exemple 1 - ABONNEZ-VOUS
Après vous être connecté à redis, tapez la commande
SUBSCRIBE study
pour vous abonner à une chaîne nommée étude.
La chaîne d'étude enverra ensuite un message. ~~
Exemple 2 - PUBLIER
Ouvrez un autre client J'utilise celui du haut de la disposition des glyphes comme éditeur, tapez
PUBLISH study "message1-go go go"
Vous pouvez. voyez que lorsque le client 1 publie un message dans le canal d'étude, le client 2 (abonné au canal d'étude) peut recevoir le message publié par c1, mais le client 3 ne peut pas recevoir c1 car il n'est pas abonné au canal d'étude envoyé.
Exemple 3 - PSUBSCRIBE
Maintenant, suivez la main gauche et la main droite du blogueur au ralenti. Tapez
PSUBSCRIBE study*
OK dans c3, tapez maintenant
PUBLISH study "message2"
dans c1 L'image du résultat ci-dessus :
c3 adopte la forme de caractère générique et modifie également le chaîne d'étude L'abonnement a réussi.
Ensuite, continuez à taper la commande en c1 :
PUBLISH study:java "I hate java forever"
Vous pouvez voir qu'en utilisant psubscribe, vous vous abonnez non seulement à la chaîne d'étude, mais également à la chaîne dirigée par Study.
Exemple 4 - PUBSUB
Tapez la chaîne pubsub en c1 pour obtenir :
127.0.0.1:6379> PUBSUB channels 1) "study"
signifie la chaîne actuellement active.
Jedis implémente le modèle d'éditeur par abonnement
好了,上面通过命令行熟悉了一下Redis中有关订阅发布者模式的相关命令。下面我们要将redis的订阅与发布者嵌入到项目中。 首先,我们使用jedis先订阅一个名为:study的频道
Ensuite, nous publions d'abord le message depuis la ligne de commande :
Après cela, nous utilisons jedis pour le faire dans le projet Publication du message :
Nous pouvons avoir une communication normale~Oh ouais~
Code principal :
PublishMessage.java est utilisé pour ouvrir un fil de discussion à publier messages
private Logger logger = LoggerFactory.getLogger(PublishMessage.class); @Resource private JedisCluster jedisCluster; /** * 发布消息 * * @param channel 频道 * @param message 信息 */ public void sendMessage(final String channel, final String message) { Thread thread = new Thread(() -> { Long publish = jedisCluster.publish(channel, message); logger.info("服务器在: {} 频道发布消息{} - {}", channel, message, publish); }); logger.info("发布线程启动:"); thread.setName("publishThread"); thread.start(); }
ChatSubscribe.java est utilisé pour gérer les événements liés aux abonnements, hérités de JedisPubSub
private Logger logger = LoggerFactory.getLogger(ChatSubscribe.class); // 取得订阅的消息后的处理 @Override public void onMessage(String channel, String message) { logger.info("订阅成功,接收到的消息为:频道-{},消息-{}", channel, message); RedisString.message = message; } // 取得按表达式的方式订阅的消息后的处理 @Override public void onPMessage(String pattern, String channel, String message) { System.out.println("-----取得按表达式的方式订阅的消息后的处理-----"); System.out.println(pattern + "=" + channel + "=" + message); } // 初始化按表达式的方式订阅时候的处理 @Override public void onPSubscribe(String pattern, int subscribedChannels) { System.out.println("-----初始化按表达式的方式订阅时候的处理-----"); System.out.println(pattern + "=" + subscribedChannels); } // 取消按表达式的方式订阅时候的处理 @Override public void onPUnsubscribe(String pattern, int subscribedChannels) { System.out.println("-----取消按表达式的方式订阅时候的处理-----"); System.out.println(pattern + "=" + subscribedChannels); } @Override public void onPong(String pattern) { super.onPong(pattern); } // 初始化订阅时候的处理 @Override public void onSubscribe(String channel, int subscribedChannels) { logger.info("初始化订阅信息:频道-{},订阅频道-{}", channel, subscribedChannels); } // 取消订阅时候的处理 @Override public void onUnsubscribe(String channel, int subscribedChannels) { logger.info("已取消订阅频道{}", channel); }
SubScribeMessage.java pour l'abonnement aux chaînes, l'annulation des chaînes et d'autres classes d'action
private Logger logger = LoggerFactory.getLogger(SubScribeMessage.class); private ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); @Resource private JedisCluster jedisCluster; /** * 订阅频道 * * @param channel 频道 * @param roomSubListerner */ public void subscribeChannel(final String channel, final ChatSubscribe roomSubListerner) { cachedThreadPool.execute(new Runnable() { @Override public void run() { jedisCluster.subscribe(roomSubListerner, channel); } }); } jedisCluster是否封装工具类,取自各位看官,核心代码已给出,请各位看官根据自身业务与逻辑,自行更改与优化代码。 本次示例程序采用tomcat 9.0 + spring + springmvc 使用了诸如:@RestController,@GetMapping等相关注解,便于开发,有兴趣可自行查阅spring相关资料。
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!

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

AI Hentai Generator
Générez AI Hentai gratuitement.

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



1. Démarrez le menu [Démarrer], entrez [cmd], cliquez avec le bouton droit sur [Invite de commandes] et sélectionnez Exécuter en tant qu'[Administrateur]. 2. Entrez les commandes suivantes dans l'ordre (copiez et collez soigneusement) : SCconfigwuauservstart=auto, appuyez sur Entrée SCconfigbitsstart=auto, appuyez sur Entrée SCconfigcryptsvcstart=auto, appuyez sur Entrée SCconfigtrustedinstallerstart=auto, appuyez sur Entrée SCconfigwuauservtype=share, appuyez sur Entrée netstopwuauserv , appuyez sur Entrée netstopcryptS.

La stratégie de mise en cache dans GolangAPI peut améliorer les performances et réduire la charge du serveur. Les stratégies couramment utilisées sont : LRU, LFU, FIFO et TTL. Les techniques d'optimisation incluent la sélection du stockage de cache approprié, la mise en cache hiérarchique, la gestion des invalidations, ainsi que la surveillance et le réglage. Dans le cas pratique, le cache LRU est utilisé pour optimiser l'API pour obtenir des informations utilisateur à partir de la base de données. Les données peuvent être rapidement récupérées du cache. Sinon, le cache peut être mis à jour après l'avoir obtenu à partir de la base de données.

Dans le développement PHP, le mécanisme de mise en cache améliore les performances en stockant temporairement les données fréquemment consultées en mémoire ou sur disque, réduisant ainsi le nombre d'accès à la base de données. Les types de cache incluent principalement le cache de mémoire, de fichiers et de bases de données. En PHP, vous pouvez utiliser des fonctions intégrées ou des bibliothèques tierces pour implémenter la mise en cache, telles que cache_get() et Memcache. Les applications pratiques courantes incluent la mise en cache des résultats des requêtes de base de données pour optimiser les performances des requêtes et la mise en cache de la sortie des pages pour accélérer le rendu. Le mécanisme de mise en cache améliore efficacement la vitesse de réponse du site Web, améliore l'expérience utilisateur et réduit la charge du serveur.

Vous devez d’abord définir la langue du système sur l’affichage chinois simplifié et redémarrer. Bien sûr, si vous avez déjà modifié la langue d'affichage en chinois simplifié, vous pouvez simplement ignorer cette étape. Ensuite, commencez à utiliser le registre, regedit.exe, accédez directement à HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage dans la barre de navigation de gauche ou dans la barre d'adresse supérieure, puis modifiez la valeur de la clé InstallLanguage et la valeur de la clé par défaut sur 0804 (si vous souhaitez la changer en anglais en- nous, vous devez d'abord définir la langue d'affichage du système sur en-us, redémarrer le système, puis tout changer en 0409). Vous devez redémarrer le système à ce stade.

1. Tout d'abord, double-cliquez sur l'icône [Ce PC] sur le bureau pour l'ouvrir. 2. Double-cliquez ensuite sur le bouton gauche de la souris pour accéder à [Lecteur C]. Les fichiers système seront généralement automatiquement stockés dans le lecteur C. 3. Recherchez ensuite le dossier [windows] dans le lecteur C et double-cliquez pour entrer. 4. Après avoir accédé au dossier [windows], recherchez le dossier [SoftwareDistribution]. 5. Après avoir entré, recherchez le dossier [télécharger], qui contient tous les fichiers de téléchargement et de mise à jour Win11. 6. Si nous souhaitons supprimer ces fichiers, supprimez-les simplement directement dans ce dossier.

Redis est un cache clé-valeur hautes performances. L'extension PHPRedis fournit une API pour interagir avec le serveur Redis. Suivez les étapes suivantes pour vous connecter à Redis, stocker et récupérer des données : Connecter : utilisez les classes Redis pour vous connecter au serveur. Stockage : utilisez la méthode set pour définir des paires clé-valeur. Récupération : utilisez la méthode get pour obtenir la valeur de la clé.

Le 6 août, CNMO a remarqué que le nouveau téléphone de Meizu était à nouveau exposé. Selon les informations fournies par la source, Meizu prépare un modèle de milieu de gamme, qui devrait être équipé d'une batterie ultra-grande capacité de 6000 mAh. Il n'y a pas de nouvelles de la série Meizu 22 pour le moment. être équipé de la plate-forme mobile Qualcomm Snapdragon 8Gen4, et l'heure de sortie pourrait être ultérieure. Se référant aux précédents nouveaux téléphones Meizu, CNMO estime que la série Meizu 22 pourrait être lancée au premier trimestre 2025. 1. Le nouveau téléphone de Meizu a passé la certification nationale de qualité et son modèle est le M431Q. Cette machine se positionne comme un modèle d'entrée de gamme et ne prend en charge qu'une charge de 10 W. Le prix devrait être d'environ 1 000 yuans. Le téléphone est soupçonné d'être un produit de la sous-marque Meizu Meizu. Le M431Q a été découvert dans la base de données en mai de cette année, avec plusieurs autres modèles. Cette fois, la qualité nationale a été dépassée

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...
