Redis底层原理

1.基本结构

Redis底层是由一张全局哈希表构成的

value五种基本类型

  • 字符串string
  • 哈希Hash
  • 列表list
  • 集合set
  • 有序集合zset

2.存储方式

Redis在存储字符串时,会尝试将其强转为int类型并存储。如果转换失败,再存储str类型

名词解释

INCR

把一个值当作整数,自增 1
INCR = 原子性的 value = value + 1

行为规则

  • 如果 key 不存在 → 先初始化为 0,再 +1 → 结果是 1
  • 如果 key 存在且是整数 → 直接 +1
  • 如果 key 不是整数 → 报错

Lua

  • 保证原子性(最重要)
  • 减少网络开销
  • 可以写逻辑判断(if语句等)

把多条命令“打包成一个整体执行”

INCR key  
EXPIRE key 60

👉 问题是:
这两条命令 不是原子操作

可能发生:

INCR 成功  
EXPIRE 没执行

✅ Lua 的作用就在这:

把多条命令“打包成一个整体执行”

if redis.call("INCR", KEYS[1]) == 1 then  
    redis.call("EXPIRE", KEYS[1], 60)  
end

👉 这个脚本在 Redis 里执行时:

  • 不会被打断
  • 不会插队
  • 要么全成功,要么全不执行
posted @ 2026-07-02 18:12  畅畅c  阅读(1)  评论(0)    收藏  举报