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 里执行时:
- 不会被打断
- 不会插队
- 要么全成功,要么全不执行

浙公网安备 33010602011771号