日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
利用Redis輕松獲取本地服務(wù)信息(redis獲取本地服務(wù))

Redis是一個(gè)開源的內(nèi)存數(shù)據(jù)庫(kù),它是一個(gè)高性能的Key-Value存儲(chǔ)系統(tǒng)。不僅如此,Redis還支持一系列的高級(jí)數(shù)據(jù)結(jié)構(gòu)操作,如List、Set、Sorted Set等等。它的性能之高、靈活性之大以及兼容性之好,使得Redis已經(jīng)成為了眾多程序員和開發(fā)者的選擇。

椒江網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

它有很多的應(yīng)用場(chǎng)景,包括緩存、消息隊(duì)列、會(huì)話管理等等。然而,在本地環(huán)境中,我們還可以借助Redis實(shí)現(xiàn)服務(wù)的自動(dòng)化發(fā)現(xiàn)以及獲取本地服務(wù)信息。下面,我們將探究如何利用Redis輕松獲取本地服務(wù)信息。

## 使用Redis實(shí)現(xiàn)服務(wù)的自動(dòng)化發(fā)現(xiàn)

在實(shí)際的生產(chǎn)環(huán)境中,往往存在大量的服務(wù),與其逐一手動(dòng)獲取這些服務(wù)的信息,不如采用Redis實(shí)現(xiàn)服務(wù)的自動(dòng)化發(fā)現(xiàn)。Redis作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù),存儲(chǔ)這些服務(wù)的信息,可以快速的進(jìn)行服務(wù)的發(fā)現(xiàn)以及獲取相應(yīng)的信息。

在實(shí)現(xiàn)服務(wù)自動(dòng)化發(fā)現(xiàn)的過(guò)程中,我們需要使用到Redis的發(fā)布訂閱機(jī)制,以便訂閱服務(wù)的信息。在服務(wù)提供者上,我們可以使用以下代碼將服務(wù)信息發(fā)布至Redis Server。

import redis
import uuid

class ServicePublisher:

def __init__(self,name,url,redis_host,redis_port):
self.redis_host = redis_host
self.redis_port = redis_port
self.name = name
self.url = url
self.uuid = uuid.uuid4().hex[:6]+'-'+name
self.redis_conn = redis.Redis(self.redis_host, self.redis_port)

def publish(self):
self.redis_conn.publish('add-service', str({'name': self.name, 'url': self.url, 'uuid': self.uuid}))

在服務(wù)消費(fèi)者上,我們可以使用以下代碼訂閱這些服務(wù)的信息。

import redis
class ServiceSubscriber(object):

def __init__(self,name,redis_host,redis_port):
self.redis_host = redis_host
self.redis_port = redis_port
self.name = name
self.redis_conn = redis.Redis(self.redis_host, self.redis_port)

def subscribe(self):
pubsub = self.redis_conn.pubsub()
pubsub.subscribe('add-service')
for item in pubsub.listen():
if item['type'] == 'message':
msg = eval(item['data'])
service_name = msg['name']
service_url = msg['url']
service_uuid = msg['uuid']
if service_name == self.name:
print('Found {} Service: URL - "{}", UUID - "{}"'.format(self.name, service_url, service_uuid))

執(zhí)行以下代碼可以訂閱服務(wù)。

subscriber = ServiceSubscriber('example-service', 'localhost', 6379)
subscriber.subscribe()

## 利用redis獲取本地服務(wù)信息

對(duì)于某些情況下,我們需要獲取本地服務(wù)的信息,例如服務(wù)的IP地址,端口等等信息。利用Redis,我們可以方便的實(shí)現(xiàn)這些功能。我們可以使用如下代碼獲取本地服務(wù)的IP地址和端口。

import socket
class LocalService(object):

def __init__(self, name, port):
self.name = name
self.port = port

def ip(self):
return socket.gethostbyname(socket.gethostname())

def url(self):
return 'http://{}:{}'.format(self.ip(),self.port)

def as_dict(self):
return {'name': self.name, 'url': self.url(), 'ip': self.ip(), 'port': str(self.port)}

我們可以將本地服務(wù)的信息存入Redis,以便訂閱服務(wù)和獲取服務(wù)信息。以下代碼將本地服務(wù)信息存入Redis。

import redis
class ServicePublisher(object):

def __init__(self,name,port,redis_host,redis_port):
self.redis_host = redis_host
self.redis_port = redis_port
self.name = name
self.port = port
self.redis_conn = redis.Redis(self.redis_host, self.redis_port)

def publish(self):
local_service = LocalService(self.name,self.port).as_dict()
self.redis_conn.set(self.name, str(local_service))

以下代碼可以獲取本地服務(wù)的信息。

import redis
class ServiceSubscriber(object):

def __init__(self,name,redis_host,redis_port):
self.redis_host = redis_host
self.redis_port = redis_port
self.name = name
self.redis_conn = redis.Redis(self.redis_host, self.redis_port)

def get_info(self):
service_info = eval(self.redis_conn.get(self.name))
service_name = service_info.get('name')
service_url = service_info.get('url')
service_ip = service_info.get('ip')
service_port = service_info.get('port')
print('Service Info: Name - "{}", URL - "{}", IP - "{}", Port - "{}"'.format(service_name, service_url, service_ip, service_port))

執(zhí)行以下代碼可以獲取本地服務(wù)信息。

subscriber = ServiceSubscriber('example-service', 'localhost', 6379)
subscriber.get_info()

在上述代碼中,我們利用Redis實(shí)現(xiàn)了服務(wù)的自動(dòng)化發(fā)現(xiàn)以及獲取本地服務(wù)信息,實(shí)現(xiàn)了服務(wù)的快速發(fā)現(xiàn)以及信息的快速獲取。同時(shí),在實(shí)際的應(yīng)用場(chǎng)景中,我們還可以根據(jù)需求對(duì)Redis進(jìn)行配置,以此進(jìn)行優(yōu)化。

創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢:028-86922220。


文章標(biāo)題:利用Redis輕松獲取本地服務(wù)信息(redis獲取本地服務(wù))
文章來(lái)源:http://www.5511xx.com/article/dpjseop.html