Skip to content

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

rwlock

使用方式

go get github.com/wangfeiso/rwlock

特性说明

为确保锁的公平性,用Lua实现了优先级队列FCFS,当多个客户端获取写锁(排它锁)的时候,先到的会先获得锁。

快速使用

import (
"github.com/wangfeiso/rwlock"
)
func main() {
// 初始化redis客户端,需要传入redis-server的ip和port
// 仅支持单机Redis
rwlock.Init(&rwlock.Options{
Addr: "127.0.0.1:6379",
})
//开始使用分布式读写锁
//创建一个锁
lock := rwlock.New("YourLockKey")
// 加上写锁
lock.Lock()
// 释放写锁
lock.Unlock()
// 加上读锁
lock.RLock()
// 释放读锁
lock.RUnlock()
}

说明

读写锁之间的互斥性如下

互斥性读锁写锁
读锁兼容互斥
写锁互斥互斥

读锁与写锁不能同时存在,读锁和读锁可以同时存在

TODO

  • 补全单元测试

About

基于Redis和Lua的分布式读写锁,使用逻辑接近go的sync.RWMutex。

Topics

Resources

Stars

91 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages