Project Icon

redsync

Go 语言实现的 Redis 分布式互斥锁

Redsync 是一个 Go 语言开发的 Redis 分布式互斥锁库,实现了 Redis 官方推荐的分布式锁算法,提供高可靠性和性能。它提供简洁 API,支持 Redigo 和 Go-redis 驱动,用于分布式系统的资源同步和互斥访问。Redsync 易于集成,适用于各种规模的分布式系统。多个知名开源项目如 Sourcegraph 和 Google 的 Open Match 都采用了 Redsync,是构建可靠分布式应用的理想选择。

Redsync

Go 参考 构建状态

Redsync 提供了一个基于 Redis 的分布式互斥锁实现,适用于 Go 语言,如这篇文章所述。Ruby 版本的参考库(由 antirez 开发)可在 github.com/antirez/redlock-rb 找到。

安装

使用 go get 命令安装 Redsync:

$ go get github.com/go-redsync/redsync/v4

将安装两个驱动程序实现;但只有使用的那个会包含在你的项目中。

请查看 examples 文件夹了解每个驱动程序的用法。

文档

使用方法

为了简化示例,错误处理使用 panic

package main

import (
	goredislib "github.com/redis/go-redis/v9"
	"github.com/go-redsync/redsync/v4"
	"github.com/go-redsync/redsync/v4/redis/goredis/v9"
)

func main() {
	// 创建一个 go-redis(或 redigo)连接池,这是 redisync 与 Redis 通信时使用的池。
	// 也可以是任何实现了 `redis.Pool` 接口的池。
	client := goredislib.NewClient(&goredislib.Options{
		Addr: "localhost:6379",
	})
	pool := goredis.NewPool(client) // 或者 pool := redigo.NewPool(...)

	// 创建一个 redisync 实例,用于获取互斥锁。
	rs := redsync.New(pool)

	// 通过为所有需要相同锁的实例使用相同的名称来获取新的互斥锁。
	mutexname := "my-global-mutex"
	mutex := rs.NewMutex(mutexname)

	// 为给定的互斥锁获取锁。成功后,其他人无法获得相同的锁(相同的互斥锁名称),直到我们解锁。
	if err := mutex.Lock(); err != nil {
		panic(err)
	}

	// 执行需要锁的工作。

	// 释放锁,以便其他进程或线程可以获得锁。
	if ok, err := mutex.Unlock(); !ok || err != nil {
		panic("unlock failed")
	}
}

贡献

欢迎贡献。

许可证

Redsync 基于 BSD(3-Clause)许可证 发布。

免责声明

此代码实现了一个当前处于提议阶段的算法,尚未经过正式分析。在生产环境中使用之前,请确保理解其工作原理。

实际应用

以下是使用 Redsync 的公开开源项目列表:

  • Sourcegraph:通用代码搜索和智能平台。在内部缓存实现中使用 Redsync。
  • Open Match(由 Google 开发):灵活、可扩展和可扩展的视频游戏匹配系统。在其状态存储实现中使用 Redsync。
  • Gocron(由 go-co-op 开发):gocron 是一个分布式作业调度包,允许你使用简单、人性化的语法在预定间隔运行 Go 函数。在其分布式作业调度器实现中使用 Redsync。

如果你在项目中使用 Redsync,请发送拉取请求将其添加到列表中。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号