面试题:分布式锁用了 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


图片来源于悟空聊架构

相关推荐
l1t18 分钟前
DeepSeek总结的 pg_regresql插件:真正可移植的 PostgreSQL 统计信息
数据库·postgresql
oradh23 分钟前
Oracle 11.2.0.1版本升级至11.2.0.4_单机环境
数据库·oracle·oracle11g·oracle升级
l1t23 分钟前
用docker安装测试crate数据库
数据库·docker·容器·cratedb
anzhxu30 分钟前
QT数据库(三):QSqlQuery使用
数据库·qt·oracle
身如柳絮随风扬30 分钟前
MySQL核心知识
数据库·mysql
德彪稳坐倒骑驴34 分钟前
Oracle 11g安装
数据库·oracle
韩立学长40 分钟前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
阿贵---1 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
想七想八不如114081 小时前
数据库--样题复习
数据库·sql·oracle
551只玄猫1 小时前
【数据库原理 实验报告1】创建和管理数据库
数据库·sql·学习·mysql·课程设计·实验报告·数据库原理