golang通过redis调用rust

本文介绍了如何使用Golang通过Redis调用Rust进行通信。在Golang的Redis端,需要先订阅回复再发送请求。而在Rust端,Rust作为被调用方订阅请求,采用多线程处理订阅到的消息通知和处理。这种架构常见于Go处理前端API业务,Rust负责底层实现。
摘要由CSDN通过智能技术生成

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()
Golang 中使用 Redis 集群,可以使用官方提供的 Redis 客户端库 Redigo。Redigo 提供了连接池、管道、事务等功能,非常适合高并发场景下的 Redis 操作。 以下是一个使用 Redigo 连接 Redis 集群的示例: ```go package main import ( "fmt" "time" "github.com/gomodule/redigo/redis" ) func main() { cluster := &redis.Cluster{ MaxRedirects: 8, StartupNodes: []string{ "redis://node1:6379", "redis://node2:6379", "redis://node3:6379", }, DialTimeout: 10 * time.Second, ReadTimeout: 100 * time.Millisecond, WriteTimeout: 100 * time.Millisecond, } conn, err := cluster.Get() if err != nil { panic(err) } defer conn.Close() _, err = conn.Do("SET", "key", "value") if err != nil { panic(err) } value, err := redis.String(conn.Do("GET", "key")) if err != nil { panic(err) } fmt.Println(value) } ``` 在以上示例中,我们使用了 `redis.Cluster` 结构体来连接 Redis 集群,`MaxRedirects` 指定了最大重定向次数,`StartupNodes` 指定了集群中的节点地址,`DialTimeout`、`ReadTimeout`、`WriteTimeout` 分别指定了建立连接、读取数据、写入数据的超时时间。 使用 `cluster.Get()` 方法可以获取一个连接,使用完后需要调用 `conn.Close()` 方法释放连接。在获取到连接后,我们可以使用 `conn.Do()` 方法来执行 Redis 命令,也可以使用 `redis.String()`、`redis.Int()` 等方法来获取命令执行结果。 需要注意的是,在 Redis 集群中使用 `SET`、`GET` 等单个键操作命令时,Redigo 会自动进行分片操作,将请求发送到正确的节点。但是在使用一些不支持分片的命令时,需要手动指定节点。例如使用 `MGET` 命令时,需要使用 `redis.MultiConn.Do()` 方法并手动指定节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值