Redis 게시 및 구독이란 무엇입니까?
푸시 문제를 해결하기 위해 Redis의 구독-퍼블리싱 모델을 사용해볼까 생각했습니다~.
개념적인 설명을 위해 다소 언급해야 할 부분이 있습니다.
什么是Redis发布订阅?Redis发布订阅是一种消息通信模式,发送者通过通道A发送消息message,订阅过通道A的客户端就可以接收到消息message。嗯度娘上面的解释要比我所说的好多了,而我所理解的就是:所谓的订阅发布模式,其实和我们看电视,听广播差不多,在我们没有调台(换频道)的时候,那个频道也是在传递消息的(发布)。我们换到那个频道上(订阅)就能接收到消息了。是的,虽然可能有些不恰当~
Instructions
本文中示例采用了三个客户端,以“品”字形排列,由上至下,由左至右分别为客户端1(c1),客户端2(c2),客户端3(c3).特此说明。
Redis 구독 및 게시 명령
먼저 Redis 서버 구축과 관련하여 말씀드리고 싶은 점은 관련 내용을 확인하시기 바랍니다.
Redis에는 게시 및 구독을 위한 간단한 명령이 6개 밖에 없다고 들었습니다. 즉:
PSUBSCRIBE 패턴 [패턴...]
패턴 형식과 일치하는 하나 이상의 채널을 구독하세요
PUBLISH 채널 메시지
chanel에 메시지 게시
PUBSUB 하위 명령 [인수 [인수 ...]]
구독 및 게시 시스템 상태 보기
PUNSUBSCRIBE [패턴 [패턴 ...]]
형식을 충족하는 모든 채널에서 구독 취소
SUBSCRIBE 채널 [채널...]
하나 이상의 채널을 구독하세요
UNSUBSCRIBE [채널 [채널...]]
채널 구독 취소
예 1 - SUBSCRIBE
redis에 연결 그런 다음
SUBSCRIBE study
명령을 입력하여 Study라는 채널을 구독하세요.
다음에 스터디 채널에서 메시지를 보내드리겠습니다. ~~
예 2 - PUBLISH
다른 클라이언트를 엽니다. 글리프 레이아웃의 맨 위에 있는 클라이언트를 게시자로 사용하고 있으며 이때 클라이언트 1이 스터디 채널에 메시지를 게시하는 것을 볼 수 있습니다. , 클라이언트 2(연구 채널 구독)는 c1이 게시한 메시지를 받을 수 있지만 클라이언트 3은 연구 채널을 구독하지 않았기 때문에 c1이 보낸 메시지를 받을 수 없습니다.
예 3 - PSUBSCRIBE이제 블로거의 왼손과 오른손을 슬로우 모션으로 따라가보세요. c3에
PUBLISH study "message1-go go go"
OK를 입력하고 이제 c1에
PSUBSCRIBE study*
를 입력합니다. 위 결과 그림은
c3이 와일드카드 형식을 채택하고 있으며 학습 채널도 성공적으로 구독되었습니다.
다음으로, 계속해서 c1에 명령을 입력하세요:
PUBLISH study "message2"
psubscribe를 사용하면 스터디 채널을 구독할 뿐만 아니라 스터디가 이끄는 채널도 구독하는 것을 볼 수 있습니다.
예 4 - PUBSUBc1에 pubsub 채널을 입력하면 다음을 얻을 수 있습니다.
PUBLISH study:java "I hate java forever"
는 현재 활성 채널을 의미합니다.
Jedis는 구독 게시자 모델을 구현합니다127.0.0.1:6379> PUBSUB channels 1) "study"
그런 다음 먼저 명령줄에서 메시지를 게시합니다.
그 후 jedis를 사용하여 프로젝트에 메시지를 게시합니다.
우리는 정상적으로 통신할 수 있습니다 ~ 오 예 ~
핵심 코드:PublishMessage.java는 메시지 게시를 위한 스레드를 시작하는 데 사용됩니다.
好了,上面通过命令行熟悉了一下Redis中有关订阅发布者模式的相关命令。下面我们要将redis的订阅与发布者嵌入到项目中。 首先,我们使用jedis先订阅一个名为:study的频道
ChatSubscribe.java는 JedisPubSub
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(); }
SubScribeMessage.java에서 상속된 구독 관련 이벤트를 처리하는 데 사용됩니다. 채널 구독, 채널 취소 및 기타 액션 수업
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); }
위 내용은 Redis 게시 및 구독이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









1. [시작] 메뉴를 시작하여 [cmd]를 입력하고 [명령 프롬프트]를 마우스 오른쪽 버튼으로 클릭한 후 [관리자 권한으로 실행]을 선택합니다. 2. 다음 명령을 순서대로 입력합니다(주의 깊게 복사하여 붙여넣기): SCconfigwuauservstart=auto, Enter SCconfigbitsstart=auto, Enter 누르기 SCconfigcryptsvcstart=auto, Enter SCconfigtrustedinstallerstart=auto, Enter SCconfigwuauservtype=share, Enter netstopwuauserv , Enter netstopcryptS 누르기

GolangAPI의 캐싱 전략은 성능을 향상시키고 서버 부하를 줄일 수 있습니다. 일반적으로 사용되는 전략은 LRU, LFU, FIFO 및 TTL입니다. 최적화 기술에는 적절한 캐시 스토리지 선택, 계층적 캐싱, 무효화 관리, 모니터링 및 조정이 포함됩니다. 실제 사례에서 LRU 캐시는 데이터베이스에서 사용자 정보를 얻기 위한 API를 최적화하는 데 사용됩니다. 그렇지 않으면 캐시를 데이터베이스에서 얻은 후 업데이트할 수 있습니다.

PHP 개발에서 캐싱 메커니즘은 자주 액세스하는 데이터를 메모리나 디스크에 임시 저장하여 데이터베이스 액세스 횟수를 줄여 성능을 향상시킵니다. 캐시 유형에는 주로 메모리, 파일 및 데이터베이스 캐시가 포함됩니다. 캐싱은 내장 함수나 캐시_get() 및 Memcache와 같은 타사 라이브러리를 사용하여 PHP에서 구현할 수 있습니다. 일반적인 실제 응용 프로그램에는 쿼리 성능을 최적화하기 위한 데이터베이스 쿼리 결과 캐싱과 렌더링 속도를 높이기 위한 페이지 출력 캐싱이 포함됩니다. 캐싱 메커니즘은 웹사이트 응답 속도를 효과적으로 향상시키고, 사용자 경험을 향상시키며, 서버 부하를 줄입니다.

먼저 시스템 언어를 중국어 간체 표시로 설정하고 다시 시작해야 합니다. 물론 이전에 표시 언어를 중국어 간체로 변경했다면 이 단계를 건너뛰어도 됩니다. 다음으로 레지스트리 조작을 시작하여 regedit.exe를 실행하고 왼쪽 탐색바 또는 상단 주소 표시줄의 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage로 직접 이동한 후 InstallLanguage 키 값과 Default 키 값을 0804로 수정합니다(영어 en-로 변경하려는 경우). 먼저 시스템 표시 언어를 en-us로 설정하고 시스템을 다시 시작한 다음 모든 항목을 0409로 변경해야 합니다. 이 시점에서 시스템을 다시 시작해야 합니다.

1. 먼저 바탕화면의 [내 PC] 아이콘을 더블클릭하여 엽니다. 2. 그런 다음 마우스 왼쪽 버튼을 더블 클릭하여 [C 드라이브]로 들어갑니다. 일반적으로 시스템 파일은 C 드라이브에 자동으로 저장됩니다. 3. 그리고 C 드라이브에 있는 [windows] 폴더를 찾아 더블클릭하여 들어갑니다. 4. [windows] 폴더 진입 후, [SoftwareDistribution] 폴더를 찾아주세요. 5. 진입 후, win11 다운로드 및 업데이트 파일이 모두 들어있는 [다운로드] 폴더를 찾아주세요. 6. 이 파일을 삭제하려면 이 폴더에서 직접 삭제하면 됩니다.

Redis는 고성능 키-값 캐시입니다. PHPRedis 확장은 Redis 서버와 상호 작용하기 위한 API를 제공합니다. 다음 단계를 사용하여 Redis에 연결하고 데이터를 저장 및 검색합니다. 연결: Redis 클래스를 사용하여 서버에 연결합니다. 저장소: 키-값 쌍을 설정하려면 set 메서드를 사용하세요. 검색: 키 값을 얻으려면 get 메소드를 사용하십시오.

8월 6일, CNMO는 Meizu의 새 휴대폰이 다시 노출되었다는 사실을 알아냈습니다. 소식통이 제공한 정보에 따르면 Meizu는 6000mAh 초대형 배터리를 탑재할 것으로 예상되는 중급 모델을 준비하고 있으며 당분간 Meizu 22 시리즈에 대한 소식은 없을 것으로 예상됩니다. Qualcomm Snapdragon 8Gen4 모바일 플랫폼이 탑재될 예정이며 출시 시기는 더 늦어질 수 있습니다. CNMO는 이전의 새로운 Meizu 휴대폰을 언급하면서 Meizu 22 시리즈가 2025년 1분기에 출시될 수 있다고 믿고 있습니다. 1. Meizu의 새 휴대폰은 국가 품질 인증을 통과했으며 모델은 M431Q입니다. 이 기기는 보급형 모델로 포지셔닝되며 10W 충전만 지원하며 가격은 1,000위안 안팎이 될 것으로 예상된다. 이 휴대폰은 메이주(Meizu) 하위 브랜드인 메이주(Meizu)의 제품으로 의심됩니다. M431Q는 다른 여러 모델과 함께 올해 5월 데이터베이스에서 발견되었습니다. 이번에 국가품질 합격

Docker 환경을 사용할 때 Docker 환경에 Extensions를 설치하기 위해 PECL을 사용하여 오류의 원인 및 솔루션. 종종 일부 두통이 발생합니다 ...
