Redis 数据类型&分布式锁

Redis 数据类型

Redis 基本命令—— 超详细操作演示!!!_redis 操作-CSDN博客

基础核心类型 (5种) → 扩展类型 (2种) → 特殊用法/模块类型

记住:Redis 设计是 二进制安全 的,但 大多数场景 我们都把它当做 字符串数据库 来用!

类型 底层实现说法(技术细节) 通俗应用说法(日常使用)
String byte[] → byte[] string → string
Hash byte[] → dict{byte[],byte[]} string → map<string,string>
List byte[] → quicklist[byte[]] string → list<string>
Set byte[] → dict{byte[]} string → set<string>
ZSet byte[] → zset{byte[],double} string → sorted set<string,double>
// String类型string → string
key: byte[] → value: byte[]
// Hash类型string → map<string,string>
key: byte[] → value: dict {field: byte[], value: byte[]}
// List类型string → list<string>
key: byte[] → value: quicklist [byte[], byte[], ...]
// Set类型string → set<string>
key: byte[] → value: dict {member: byte[]}
// ZSet类型string → sorted set<string,double>
key: byte[] → value: zset {
    skiplist: {score: double, member: byte[]},
    dict: {member: byte[] → score: double}
}

Redis 内存中的真实结构

// 简化版的 Redis 内存结构
typedef struct redisDb {
    dict *dict;              // 主字典,存储所有键值对
} redisDb;

// dict 中的每个 entry:
key: byte[]                 // 键(二进制)
value: redisObject*        // 指向值的指针

// redisObject 根据类型不同指向不同结构:
// - String: 直接指向 byte[]
// - List: 指向 quicklist
// - Hash: 指向 dict
// - Set: 指向 dict
// - Sorted Set: 指向 zset
类型 Key 结构 Value 结构 主要用途 是否二进制安全
String byte[] byte[] 缓存、计数器、锁
Hash byte[] dict 对象存储、配置
List byte[] quicklist[byte[]] 队列、栈、时间线
Set byte[] dict 标签、共同好友、去重
Sorted Set byte[] zset 排行榜、时间排序
Stream 扩展类型 byte[] rax+listpack 消息队列、事件源
HyperLogLog 扩展类型 byte[] hyperloglog(12KB) 基数统计、UV统计
Bitmap 位图- String的特殊用法 byte[] byte[] (位操作) 签到、在线状态、布尔统计
Geospatial 地理位置)- ZSet的特殊用法 byte[] zset (GEO编码) 地理位置、附近的人

Redis分布式锁

分布式锁的核心意义在于:在分布式系统中,协调多个节点/服务对共享资源的互斥访问

分布式锁的本质就是:在分布式系统中,实现跨进程/跨机器的互斥访问控制,确保同一时刻只有一个节点能执行特定操作。

分布式锁的一种实现就是SET NX EX,去redis里面创建一个string类型的key-value,创建不成功说明别人拿到了锁,创建成功表示自己拿到了锁

  • # 尝试创建锁 创建一个key:lock_key value:unique_value。创建成功说明拿到了锁,创建失败说明别人已经拿到了锁
    SET lock_key unique_value NX EX 10
    # 参数说明:
    # NX:仅当key不存在时才设置
    # EX:设置过期时间(秒)
    # PX:设置过期时间(毫秒)
    # unique_value:唯一标识,用于安全释放锁
    
  • https://blog.csdn.net/weixin_43412762/article/details/135426120#93_setnx__157

posted @ 2025-12-01 20:34  deyang  阅读(0)  评论(0)    收藏  举报