【Redis】【Python3】Redis-Server의 인스톨과 Python으로 실시하는 publish/subscribe
0. 소개
Redis는 간단하게 말하면 NoSQL의 데이터베이스 서버이다.
간단한 메시지 기능인 publish/subscribe(Android에서 비유한다면 Intent적인 것)를 가지고 있다.
Redis-Server 설치 및 publish/subscribe에 대해 설명합니다.
1. 설치
설치
다음 명령으로 설치할 수 있습니다.
$ sudo apt-get update
$ sudo apt-get install redis-server
동작 확인
서버 버전 확인
$ redis-server -v
클라이언트 버전 확인
$ redis-cli -v
2. publish/subscribe
Redis-py 설치
아래에 파이썬에서 Redis를 다루는 샘플을 썼지만, 여기에는 Redis-py를 설치해야합니다.
$ pip3 install redis
publish
publish는 지정된 채널에 메시지를 던지는 조작.
참조 → htps : // / ぢ s. 이오 / 코만 ds / 푸 b sh
$ redis-cli
> publish channel message
당연히 채널과 메시지는 자유롭게 설정할 수 있습니다.
여기서 보낸 메시지는 DB에 저장되지 않습니다.
다음은 이것을 Python에서 수행하는 샘플입니다.
publish_test.pyimport redis
import time
host = 'localhost'
port = 6379
def run_publish(loopCount):
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
for i in range(loopCount):
# publish
connect.publish('publish', 'xxxxx')
time.sleep(1)
if __name__ == '__main__':
run_publish(10)
publish () 함수의 첫 번째 인수로 전송할 채널을 지정하고 두 번째 인수로 메시지를 지정합니다.
하고 있는 것은 이하의 커멘드를 10회 송신하고 있을 뿐.
> publish publish xxxxx
subscribe
subscribe 는 지정한 채널에 던진 메시지를 취득하는 조작.
참조 → htps : // / ぢ s. 이오 / こまんds / す bsc 리베
$ redis-cli
> subscribe channel
모니터링을 시작하기 전에 전송된 메시지는 검색할 수 없습니다.
채널 다음에 다른 채널을 지정하면 동시에 여러 채널을 감시할 수 있다.
다음은 channel01과 channel02라는 2개의 채널을 감시하는 예.
$ redis-cli
> subscribe channel01 channel02
시험에 감시하고 있는 채널에 publish로 메시지를 송신하면 수신할 수 있는 것을 확인할 수 있을 것이다.
(아래에서 3행이 수신한 메시지)
$ redis-cli
> subscribe channel01
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel01"
3) (integer) 1
1) "message"
2) "channel01"
3) "test_message"
그리고 다음이 파이썬에서 수행하는 예.
subscribe_test.pyimport redis
host = 'localhost'
port = 6379
def run_subscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# subscribe開始
pubsub.subscribe(['subscribe'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# subscribe終了
pubsub.unsubscribe()
break
if __name__ == '__main__':
run_subscribe()
subscribe() 함수의 인수로 감시할 채널을 지정한다.
이 샘플의 포인트는 수신한 메시지를 디코드하고 있는 것.
이것을 하지 않으면 메시지를 올바르게 처리할 수 없고, 기대한 동작을 하지 않게 된다.
(샘플을 예제로 보내면 스크립트가 종료되지 않음)
subscribe를 끝낼 때는 unsubscribe() 함수를 호출해, 감시를 종료시키는 것을 잊지 않고.
psubscribe
감시하는 채널이 많으면 채널 지정이 번거롭게 된다.
감시 대상의 채널을 패턴 지정할 수있는 커맨드도 준비되어있다.
참조 → htps : // / ぢ s. 이오 / 코만 ds / p bsc 리베
$ redis-cli
> psubscribe pattern
패턴 지정할 수 있으므로, 송신되고 있는 메세지를 모두 감시하는 것도 가능.
(불필요한 메시지가 전송되지 않았는지 등의 테스트에 편리)
$ redis-cli
> psubscribe *
물론 파이썬에서도 사용할 수 있습니다.
(불필요한 채널을 데리러, 고장의 원인이 될 수 있기 때문에 개인적으로는 추천하지 않는다)
psubscribe_test.pyimport redis
host = 'localhost'
port = 6379
def run_psubscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# psubscribe開始
pubsub.psubscribe(['*'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばpsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# psubscribe終了
pubsub.punsubscribe()
break
if __name__ == '__main__':
run_psubscribe()
3. 끝에
publish/subscribe는 간단한 내용의 통신을 구현하는데 매우 편리해 보입니다.
(간단하게 실장할 수 있어 통신 내용도 간단하게 들여다보기 위해)
98. 참고
파이썬에서 Redis 처리 (redis-py의 기본) - h tp // w w. 덴조 w. 메/엔트리/2017/10/07/233233
[팁] Python에서 Redis 사용 (8) ~ PUB/SUB ~ - ht tp // 모코타타바 c p. 하나 mblr. 코 m/포 st/81758811694/치 ps-py 흠-% 3% 81% 8B% 에 3% 82% 89-ぢs-에 3% 82% 92% 에 4% BD% BF% 3 % 81 % 86-8-pu bsu b
redis-py - htps : // 기주 b. 코 m / an dym
Command reference – Redis - htps : // / ぢ s. 이오 / 코만 ds
99. 갱신 내역
날짜
변경 내용
2018/02/08
글
Reference
이 문제에 관하여(【Redis】【Python3】Redis-Server의 인스톨과 Python으로 실시하는 publish/subscribe), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/entan05/items/3f90b3ab9b194c35cee3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
설치
다음 명령으로 설치할 수 있습니다.
$ sudo apt-get update
$ sudo apt-get install redis-server
동작 확인
서버 버전 확인
$ redis-server -v
클라이언트 버전 확인
$ redis-cli -v
2. publish/subscribe
Redis-py 설치
아래에 파이썬에서 Redis를 다루는 샘플을 썼지만, 여기에는 Redis-py를 설치해야합니다.
$ pip3 install redis
publish
publish는 지정된 채널에 메시지를 던지는 조작.
참조 → htps : // / ぢ s. 이오 / 코만 ds / 푸 b sh
$ redis-cli
> publish channel message
당연히 채널과 메시지는 자유롭게 설정할 수 있습니다.
여기서 보낸 메시지는 DB에 저장되지 않습니다.
다음은 이것을 Python에서 수행하는 샘플입니다.
publish_test.pyimport redis
import time
host = 'localhost'
port = 6379
def run_publish(loopCount):
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
for i in range(loopCount):
# publish
connect.publish('publish', 'xxxxx')
time.sleep(1)
if __name__ == '__main__':
run_publish(10)
publish () 함수의 첫 번째 인수로 전송할 채널을 지정하고 두 번째 인수로 메시지를 지정합니다.
하고 있는 것은 이하의 커멘드를 10회 송신하고 있을 뿐.
> publish publish xxxxx
subscribe
subscribe 는 지정한 채널에 던진 메시지를 취득하는 조작.
참조 → htps : // / ぢ s. 이오 / こまんds / す bsc 리베
$ redis-cli
> subscribe channel
모니터링을 시작하기 전에 전송된 메시지는 검색할 수 없습니다.
채널 다음에 다른 채널을 지정하면 동시에 여러 채널을 감시할 수 있다.
다음은 channel01과 channel02라는 2개의 채널을 감시하는 예.
$ redis-cli
> subscribe channel01 channel02
시험에 감시하고 있는 채널에 publish로 메시지를 송신하면 수신할 수 있는 것을 확인할 수 있을 것이다.
(아래에서 3행이 수신한 메시지)
$ redis-cli
> subscribe channel01
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel01"
3) (integer) 1
1) "message"
2) "channel01"
3) "test_message"
그리고 다음이 파이썬에서 수행하는 예.
subscribe_test.pyimport redis
host = 'localhost'
port = 6379
def run_subscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# subscribe開始
pubsub.subscribe(['subscribe'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# subscribe終了
pubsub.unsubscribe()
break
if __name__ == '__main__':
run_subscribe()
subscribe() 함수의 인수로 감시할 채널을 지정한다.
이 샘플의 포인트는 수신한 메시지를 디코드하고 있는 것.
이것을 하지 않으면 메시지를 올바르게 처리할 수 없고, 기대한 동작을 하지 않게 된다.
(샘플을 예제로 보내면 스크립트가 종료되지 않음)
subscribe를 끝낼 때는 unsubscribe() 함수를 호출해, 감시를 종료시키는 것을 잊지 않고.
psubscribe
감시하는 채널이 많으면 채널 지정이 번거롭게 된다.
감시 대상의 채널을 패턴 지정할 수있는 커맨드도 준비되어있다.
참조 → htps : // / ぢ s. 이오 / 코만 ds / p bsc 리베
$ redis-cli
> psubscribe pattern
패턴 지정할 수 있으므로, 송신되고 있는 메세지를 모두 감시하는 것도 가능.
(불필요한 메시지가 전송되지 않았는지 등의 테스트에 편리)
$ redis-cli
> psubscribe *
물론 파이썬에서도 사용할 수 있습니다.
(불필요한 채널을 데리러, 고장의 원인이 될 수 있기 때문에 개인적으로는 추천하지 않는다)
psubscribe_test.pyimport redis
host = 'localhost'
port = 6379
def run_psubscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# psubscribe開始
pubsub.psubscribe(['*'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばpsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# psubscribe終了
pubsub.punsubscribe()
break
if __name__ == '__main__':
run_psubscribe()
3. 끝에
publish/subscribe는 간단한 내용의 통신을 구현하는데 매우 편리해 보입니다.
(간단하게 실장할 수 있어 통신 내용도 간단하게 들여다보기 위해)
98. 참고
파이썬에서 Redis 처리 (redis-py의 기본) - h tp // w w. 덴조 w. 메/엔트리/2017/10/07/233233
[팁] Python에서 Redis 사용 (8) ~ PUB/SUB ~ - ht tp // 모코타타바 c p. 하나 mblr. 코 m/포 st/81758811694/치 ps-py 흠-% 3% 81% 8B% 에 3% 82% 89-ぢs-에 3% 82% 92% 에 4% BD% BF% 3 % 81 % 86-8-pu bsu b
redis-py - htps : // 기주 b. 코 m / an dym
Command reference – Redis - htps : // / ぢ s. 이오 / 코만 ds
99. 갱신 내역
날짜
변경 내용
2018/02/08
글
Reference
이 문제에 관하여(【Redis】【Python3】Redis-Server의 인스톨과 Python으로 실시하는 publish/subscribe), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/entan05/items/3f90b3ab9b194c35cee3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ pip3 install redis
$ redis-cli
> publish channel message
import redis
import time
host = 'localhost'
port = 6379
def run_publish(loopCount):
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
for i in range(loopCount):
# publish
connect.publish('publish', 'xxxxx')
time.sleep(1)
if __name__ == '__main__':
run_publish(10)
> publish publish xxxxx
$ redis-cli
> subscribe channel
$ redis-cli
> subscribe channel01 channel02
$ redis-cli
> subscribe channel01
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel01"
3) (integer) 1
1) "message"
2) "channel01"
3) "test_message"
import redis
host = 'localhost'
port = 6379
def run_subscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# subscribe開始
pubsub.subscribe(['subscribe'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# subscribe終了
pubsub.unsubscribe()
break
if __name__ == '__main__':
run_subscribe()
$ redis-cli
> psubscribe pattern
$ redis-cli
> psubscribe *
import redis
host = 'localhost'
port = 6379
def run_psubscribe():
# redisに接続
connect = redis.StrictRedis(host=host, port=port)
# Pubsubオブジェクト生成
pubsub = connect.pubsub()
# psubscribe開始
pubsub.psubscribe(['*'])
for item in pubsub.listen():
print(item)
# 値が"end"ならばpsubscribeを終了させる
# channel、dataはbyte列な場合があるので必要に応じてデコードする
data = item.get('data')
if isinstance(data, bytes):
data = data.decode('utf-8')
if data == 'end':
# psubscribe終了
pubsub.punsubscribe()
break
if __name__ == '__main__':
run_psubscribe()
publish/subscribe는 간단한 내용의 통신을 구현하는데 매우 편리해 보입니다.
(간단하게 실장할 수 있어 통신 내용도 간단하게 들여다보기 위해)
98. 참고
파이썬에서 Redis 처리 (redis-py의 기본) - h tp // w w. 덴조 w. 메/엔트리/2017/10/07/233233
[팁] Python에서 Redis 사용 (8) ~ PUB/SUB ~ - ht tp // 모코타타바 c p. 하나 mblr. 코 m/포 st/81758811694/치 ps-py 흠-% 3% 81% 8B% 에 3% 82% 89-ぢs-에 3% 82% 92% 에 4% BD% BF% 3 % 81 % 86-8-pu bsu b
redis-py - htps : // 기주 b. 코 m / an dym
Command reference – Redis - htps : // / ぢ s. 이오 / 코만 ds
99. 갱신 내역
날짜
변경 내용
2018/02/08
글
Reference
이 문제에 관하여(【Redis】【Python3】Redis-Server의 인스톨과 Python으로 실시하는 publish/subscribe), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/entan05/items/3f90b3ab9b194c35cee3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
날짜
변경 내용
2018/02/08
글
Reference
이 문제에 관하여(【Redis】【Python3】Redis-Server의 인스톨과 Python으로 실시하는 publish/subscribe), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/entan05/items/3f90b3ab9b194c35cee3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)