page contents

Golang通过Redis调用rust

golang的redis端 要注意的是要先订阅回复,然后再发送请求。 package mainimport ("github.com/go-redis/redis")var wait = make(chan interface{})func main() {client := redis.NewClient...

attachments-2021-07-cwLuoZzA60e3f935681a1.png

golang的redis端

要注意的是要先订阅回复,然后再发送请求。

package main
import (
"github.com/go-redis/redis"
)
var wait = make(chan interface{})
func main() {
client := redis.NewClient(&redis.Options{
Addr:     "xxxxxxxxx:6379",
Password: "", // no password set
DB:       0,  // use default DB
})
pubsub := client.Subscribe("sayhello_rsp")
defer pubsub.Close()
pubsub.Receive();
go func() {
ch := pubsub.Channel();
select {
case channel := <-ch:
println(channel.Payload)
wait <- 1
}
}()
println("hello rust")
client.Publish("sayhello_req", "hello rust")
<-wait
}

rust端

rust作为被调用端订阅请求,rust将订阅到消息通知和处理分开,并且做成多线程处理。

use std::sync::mpsc;
use std::thread;
use std::sync::Arc;
use std::sync::Mutex;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
    let client = redis::Client::open("redis://xxxxxxxx/")?;
    let mut con = client.get_connection()?;
    let mut pubsub = con.as_pubsub();
    pubsub.subscribe("sayhello_req")?;
    let (tx, rx) = mpsc::channel();
    let receiver = Arc::new(Mutex::new(rx));
    for _ in 1..10 {
        let con2 = client.get_connection()?;
        let rx_arc = Arc::clone(&receiver);
        thread::spawn(move || {
            loop {
                let message = rx_arc.lock().unwrap().recv().unwrap();
                println!("payload : {}", message);
                redis::cmd("PUBLISH").arg("sayhello_rsp").arg("hello go").execute(&con2);
            }
        });
    }
    loop {
        let msg = pubsub.get_message()?;
        let payload: String = msg.get_payload()?;
        tx.send(payload)?;
    }
}

当然反过来也一样,但是基本go做前端api业务,然后rust做具体的底层实现。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-FCDoxMif62ad33d906bb5.jpeg

  • 发表于 2021-07-06 14:34
  • 阅读 ( 521 )
  • 分类:Golang

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章