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

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

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

Project Cover

Kimi

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

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

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

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

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