Redis 구독 게시Jedis 실현 방법
개념 적 인 서술 에 대해 많 고 적 음 은 언급 해 야 한다.
레 디 스 구독 은 무엇 입 니까?Redis 게시 구독 은 일종 의 메시지 통신 모드 로 발송 자가 채널 A 를 통 해 메시지 메 시 지 를 보 내 고 채널 A 를 구독 한 클 라 이언 트 가 메시지 메 시 지 를 받 을 수 있다.네,어머니 의 설명 은 제 가 말 한 것 보다 훨씬 좋 습 니 다.제 가 이해 하 는 것 은 바로 구독 발표 모델 입 니 다.사실은 우리 와 텔레비전 을 보고 방송 을 듣 는 것 과 차이 가 많 지 않 습 니 다.우리 가 채널 을 바 꾸 지 않 았 을 때 그 채널 도 소식 을 전달 하고 있 었 습 니 다.우 리 는 그 채널 로 바 꾸 면 소식 을 받 을 수 있다.네,좀 부적 절 할 수도 있 지만~
설명 하 다.
본 논문 에서 예 시 는 세 개의 클 라 이언 트 를 사용 하여'품'자형 으로 배열 하고 위 에서 아래로,왼쪽 에서 오른쪽으로 각각 클 라 이언 트 1(c1),클 라 이언 트 2(c2),클 라 이언 트 3(c3)이다.이에 대해 설명 한다.
Redis 구독 및 게시 명령
먼저,레 디 스 서버 구축 작업 에 대해 서 는 관련 자 료 를 조회 하여 환경 구조 조정 을 진행 하 시기 바 랍 니 다.
레 디 스에 서 게시 와 구독 은 간단 한 6 개의 명령 만 있다 고 합 니 다.즉:
PSUBSCRIBE pattern [pattern ...]
pattern 형식 에 맞 는 채널 을 하나 이상 구독 합 니 다.
PUBLISH channel message
chanel 에 게 메 시 지 를 보 냅 니 다.
PUBSUB subcommand [argument [argument ...]]
구독 및 게시 시스템 상태 보기
PUNSUBSCRIBE [pattern [pattern ...]]
형식 에 맞 는 모든 채널 을 취소 하 다.
SUBSCRIBE channel [channel ...]
하나 이상 의 채널 구독
UNSUBSCRIBE [channel [channel ...]]
채널 구독 취소
예 1-SUBSCRIBE
redis 연결 후 명령 입력
SUBSCRIBE study
이렇게 해서 스 터 디 라 는 채널 을 구독 했다.이제 스 터 디 채널 에서 메 시 지 를 보 낼 거 야~~
예 2-PUBLISH
다른 클 라 이언 트 를 열 었 습 니 다.제 가 사용 하 는 것 은 품 자형 구조의 맨 위 에 있 는 것 을 발표 자로 하고 입력 하 는 것 입 니 다.
PUBLISH study "message1-go go go"
클 라 이언 트 1 이 study 채널 에서 메 시 지 를 발표 할 때 클 라 이언 트 2(study 채널 구독)는 c1 이 발표 한 메 시 지 를 받 을 수 있 고 클 라 이언 트 3 은 study 채널 을 구독 하지 않 아 c1 이 보 낸 메 시 지 를 받 지 못 하 는 것 을 볼 수 있 습 니 다.예 3-PSUBSCRIBE
이제 블 로 거들 의 왼손,오른손 을 따라 천천히 움 직 여 라.c3 에 입력
PSUBSCRIBE study*
OK,현재 c1 에 입력
PUBLISH study "message2"
위의 결과 그림:c3 에서 사용 하 는 마스크 형식 도 study 채널 을 구독 에 성공 했다.
다음 c1 에서 명령 을 계속 입력 하 십시오:
PUBLISH study:java "I hate java forever"
psubscribe 를 이용 해 스 터 디 채널 을 구독 할 뿐만 아니 라 스 터 디 를 비롯 한 채널 도 구독 하 는 것 을 볼 수 있다.예 4-PUBSUB
c1 에 pubsub channel 을 입력 하면 획득 가능:
127.0.0.1:6379> PUBSUB channels
1) "study"
현재 활약 중인 채널 을 뜻한다.Jedis 구독 게시 자 모드 구현
자,위 에서 명령 행 을 통 해 Redis 에서 구독 자 모드 에 관 한 명령 을 익 혔 습 니 다.다음은 redis 의 구독 과 게시 자 를 프로젝트 에 삽입 합 니 다.
우선,우 리 는 jedis 를 이용 하여 먼저'study'라 는 채널 을 구독 합 니 다.
그리고 우 리 는 먼저 명령 행 에서 소식 을 발표 합 니 다.
그 후에 저 희 는 jedis 를 사용 하여 프로젝트 에서 소식 을 발표 합 니 다.
우 리 는 정상 적 인 통신 을 할 수 있어~아 싸~
핵심 코드:
PublishMessage.자바 는 메 시 지 를 발표 하 는 스 레 드 를 여 는 데 사 용 됩 니 다.
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 는 구독 관련 이 벤트 를 처리 하 는 데 사 용 됩 니 다.
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 구독 채널 취소 등 액 션 클래스
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 。
이상 이 Redis 구독 게시제 디 스 의 실현 방법 은 바로 편집장 님 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.