分布式锁-redlock

参考redis官方文档分布式锁,使用Linux c开发完成。git链接:https://github.com/lusenoot/distlock

欢迎喜欢的小伙伴,阅读并提出建议。

To create an lock manager

API: distmutex_t *dist_mutex_init(const redisContext **ctx, size_t count, size_t vallen);

distmutex_t *mutex = dist_mutex_init(redisctx, ctx_count, 16);

Acquire a lock

API:
    int dist_mutex_lock(distmutex_t *mutex, const char *key, int expiretime);
    int dist_mutex_trylock(distmutex_t *mutex, const char *key, int expiretime, int retries);

int iret = dist_mutex_lock(mutex, "my_key_name", 10000);
if (iret != MUTEX_OK) {
    printf("lock failed\n");
}

Or:
int iret = dist_mutex_trylock(mutex, "my_key_name", 10000, 3); 
if (iret != MUTEX_OK) {
    printf("lock failed\n");
}

Release a lock

API: int dist_mutex_unlock(distmutex_t *mutex, const char *key);

int iret = dist_mutex_unlock(mutex, "my_key_name");
if (iret != MUTEX_OK) {
    printf("lock failed\n");
}

Get lock status

API: int dist_mutex_status(distmutex_t *mutex);

status: 0 for free, 1 for busy; but if mutex is NULL, return -2.
int status = dist_mutex_status(mutex);

Release lock manager

API: void dist_mutex_destroy(distmutex_t *mutex);

dist_mutex_destroy(mutex);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先大胆下一个结论。 由于分布式环境的复杂性目前是没有完美的分布式锁实现方案的。无论是基于redis的RedLock...
    拙拙者阅读 883评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 谁为携手人,我来君去隔昏晨。 壹 爹一早出诊去了,妹妹细姑娘这两天身子又不好,歪在床上补觉。母亲在后天井里,正和家...
    xhy0606阅读 427评论 10 6
  • 二零一七,但愿不是像去年一样的样子
    雷震子最帅阅读 285评论 1 1
  • 今天早上起床小代还是有点发烧,yix已经第三天发烧了,我不放心就给请了假带孩子去医院看看,查了个血常规,问题不大,...
    小戴妈阅读 326评论 0 1