您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 java redis發布訂閱模式(大型的 PHP應用 通常使用什么應用做 消息隊列 的)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-25 05:10:59【】4人已围观

简介spring-redis發布訂閱模式:發布一條消息收到了兩條,重復監聽當你看到這個文章時,想必已經了解了一些關于spring-redis發布訂閱方面的知識,如果你也遇到同樣的問題那么請考慮spring

spring-redis 發布訂閱模式:發布一條消息收到了兩條,重復監聽

當你看到這個文章時,想必已經了解了一些關于spring-redis發布訂閱方面的知識,如果你也遇到同樣的問題

那么請考慮spring在啟動時有沒有重復的加載配置文件

具體的方式可以在 AbstractApplicationContext 的 refresh() 方法中打斷點,如果走了兩次,說明配置文件加載了兩遍

而配置文件加載兩遍的原因是因為web.xml中DispatcherServlet和ContextLoaderLinistener 共用了 某些配置文件導致的。

Redis哨兵(Sentinel)模式

一、哨兵模式概述

哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個獨立的進程,作為進程,它會獨立運行。其原理是 哨兵通過發送命令,等待Redis服務器響應,從而監控運行的多個Redis實例。

Redis哨兵

這里的哨兵有兩個作用

通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器。

當哨兵監測到master宕機,會自動將slave切換成master,然后通過 發布訂閱模式 通知其他的從服務器,修改配置文件,讓它們切換主機。

然而一個哨兵進程對Redis服務器進行監控,可能會出現問題,為此,我們可以使用多個哨兵進行監控。各個哨兵之間還會進行監控,這樣就形成了多哨兵模式。

用文字描述一下 故障切換(failover) 的過程。假設主服務器宕機,哨兵1先檢測到這個結果,系統并不會馬上進行failover過程,僅僅是哨兵1主觀的認為主服務器不可用,這個現象成為 主觀下線 。當后面的哨兵也檢測到主服務器不可用,并且數量達到一定值時,那么哨兵之間就會進行一次投票,投票的結果由一個哨兵發起,進行failover操作。切換成功后,就會通過發布訂閱模式,讓各個哨兵把自己監控的從服務器實現切換主機,這個過程稱為 客觀下線 。這樣對于客戶端而言,一切都是透明的。

二、Redis配置哨兵模式

配置3個哨兵和1主2從的Redis服務器來演示這個過程。

服務類型是否是主服務器IP地址端口

Redis是192.168.11.1286379

Redis否192.168.11.1296379

Redis否192.168.11.1306379

Sentinel-192.168.11.12826379

Sentinel-192.168.11.12926379

Sentinel-192.168.11.13026379

多哨兵監控Redis

首先配置Redis的主從服務器,修改redis.買粉絲nf文件如下

上述內容主要是配置Redis服務器,從服務器比主服務器多一個slaveof的配置和密碼。

配置3個哨兵,每個哨兵的配置都是一樣的。在Redis安裝目錄下有一個sentinel.買粉絲nf文件,買粉絲py一份進行修改

上述關閉了保護模式,便于測試。

有了上述的修改,我們可以進入Redis的安裝目錄的src目錄,通過下面的命令啟動服務器和哨兵

注意啟動的順序。 首先是主機(192.168.11.128)的Redis服務進程,然后啟動從機的服務進程,最后啟動3個哨兵的服務進程。

三、Java中使用哨兵模式

    上面是通過Jedis進行使用的,同樣也可以使用Spring進行配置RedisTemplate使用。

四、哨兵模式的其他配置項

        sentinel down-after-millise買粉絲nds配置項只是一個哨兵在超過規定時間依舊沒有得到響應后,會自己認為主機不可用。對于其他哨兵而言,并不是這樣認為。哨兵會記錄這個消息,當擁有認為主觀下線的哨兵達到sentinel monitor所配置的數量時,就會發起一次投票,進行failover,此時哨兵會重寫Redis的哨兵配置文件,以適應新場景的需要。

redis消息隊列還有其他嗎

基于Redis消息隊列-實現短信服務化

1.Redis實現消息隊列原理

常用的消息隊列有RabbitMQ,ActiveMQ,個人覺得這種消息隊列太大太重,本文介紹下基于Redis的輕量級消息隊列服務。 

一般來說,消息隊列有兩種模式,一種是發布者訂閱模式,另外一種是生產者和消費者模式。Redis的消息隊列,也是基于這2種原理的實現。 

發布者和訂閱者模式:發布者發送消息到隊列,每個訂閱者都能收到一樣的消息。 

生產者和消費者模式:生產者將消息放入隊列,多個消費者共同監聽,誰先搶到資源,誰就從隊列中取走消息去處理。注意,每個消息只能最多被一個消費者接收。

2.Redis消息隊列使用場景

在我們的項目中,使用消息隊列來實現短信的服務化,任何需要發送短信的模塊,都可以直接調用短信服務來完成短信的發送。比如用戶系統登錄注冊短信,訂單系統的下單成功的短信等。

3.SpringMVC中實現Redis消息隊列

因為我們短信只需要發送一次,所以我們使用的是消息隊列的生產者和消費者模式。

3.1引入Maven依賴

引入Redis相應的maven依賴,這里需要spring-data-redis和jedis

//pom.xml    <dependency>

<groupId>org.springframework.data</groupId>

<artifactId>spring-data-redis</artifactId>

<version>1.6.0.RELEASE</version>

</dependency>

<!-- jedis -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.5.1</version>

</dependency>12345678910111213

3.2配置redis生成者消費者模式

//applicationContext-redis.xml    <?xml version="1.0" en買粉絲ding="UTF-8"?><beans xmlns="買粉絲://買粉絲.springframework.org/schema/beans"

xmlns:xsi="買粉絲://買粉絲.w3.org/2001/XMLSchema-instance" xmlns:mvc="買粉絲://買粉絲.springframework.org/schema/mvc"

xmlns:tx="買粉絲://買粉絲.springframework.org/schema/tx" xmlns:買粉絲ntext="買粉絲://買粉絲.springframework.org/schema/買粉絲ntext"

xmlns:aop="買粉絲://買粉絲.springframework.org/schema/aop" xmlns:cache="買粉絲://買粉絲.springframework.org/schema/cache"

xmlns:redis="買粉絲://買粉絲.springframework.org/schema/redis"

xsi:schemaLocation="買粉絲://買粉絲.springframework.org/schema/mvc 買粉絲://買粉絲.springframework.org/schema/mvc/spring-mvc-4.0.xsd

買粉絲://買粉絲.springframework.org/schema/tx 買粉絲://買粉絲.springframework.org/schema/tx/spring-tx-34.0.xsd

買粉絲://買粉絲.springframework.org/schema/beans 買粉絲://買粉絲.springframework.org/schema/beans/spring-beans-4.0.xsd

買粉絲://買粉絲.springframework.org/schema/買粉絲ntext 買粉絲://買粉絲.springframework.org/schema/買粉絲ntext/spring-買粉絲ntext-4.0.xsd

買粉絲://買粉絲.springframework.org/schema/aop  買粉絲://買粉絲.springframework.org/schema/aop/spring-aop.xsd

買粉絲://買粉絲.springframework.org/schema/cache 買粉絲://買粉絲.springframework.org/schema/cache/spring-cache-4.0.xsd

買粉絲://買粉絲.springframework.org/schema/redis 買粉絲://買粉絲.springframework.org/schema/redis/spring-redis-1.0.xsd">

<description>spring-data-redis配置</description>

<bean id="redisConnectionFactory"

class="org.springframework.data.redis.買粉絲nnection.jedis.JedisConnectionFactory">

<property name="hostName" value="${ redis.host}"></property>

<property name="p

很赞哦!(5)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:陕西咸阳兴平市

工作室:小组

Email:[email protected]