面试题:分布式锁用了 Redis 的什么数据结构

在使用 Redis 实现分布式锁时,通常使用 Redis 的字符串(String)。Redis 的字符串是最基本的数据类型,一个键对应一个值,它能够存储任何形式的字符串,包括二进制数据。字符串类型的值最多可以是 512MB。

Redis 实现分布式锁的本质,就是在 Redis 里面占一个"茅坑",当别的进程也来占坑时,发现已经有进程蹲在那里了,就只好放弃或者稍后再试。

  • set 命令加锁
    • lockname:锁的名字 (键)
    • true:是锁的状态(值)
    • EX 5:设置这个键的过期时间为5秒。这意味着如果锁的持有者没有在5秒内释放锁(比如因为崩溃或其他原因),锁会自动被释放,以防止死锁
    • NX(Not Exist):保证只有当 lockname 不存在时,即锁未被其他客户端持有时,当前操作才会成功设置键,从而实现加锁。如果锁已经存在,则命令不会执行任何操作。
java 复制代码
SET lockname true EX 5 NX 
  • 释放锁
java 复制代码
DEL lockname


图片来源于悟空聊架构

相关推荐
小小管写大大码2 分钟前
AI重排序API:优化搜索相关性
数据库·人工智能
在未来等你38 分钟前
Kafka面试精讲 Day 25:Kafka与大数据生态集成
大数据·分布式·面试·kafka·消息队列
努力学习的少女2 小时前
SpaekSql函数
前端·数据库
张毫洁2 小时前
mysql、oracle的JDBC操作
数据库·mysql·oracle
武子康2 小时前
大数据-134 ClickHouse 单机+集群节点落地手册 | 安装配置 | systemd 管理 / config.d
大数据·分布式·后端
-Xie-2 小时前
Mysql杂志(三十四)——MVCC、日志分类
数据库·mysql
Tech有道2 小时前
字节真实面经:以Mysql为例,讲一下一条SQL的执行过程和原理!
数据库·后端
壹米饭2 小时前
QuestDB数据不能新增问题解决方案
数据库·后端
一个喜欢分享的PHP技术2 小时前
使用JdbcTemplate访问MySQL数据库
数据库
Thepatterraining2 小时前
MySQL灾难恢复实战指南:从日志分析到数据恢复,大厂经验全分享
数据库·mysql