【Redis中间件】#4 | 进阶数据类型语法

一、Bitmap 位图

位图本质是String 字符串类型的扩展,用一个字符串模拟 bit 数组,数组下标就是偏移量,支持位运算。 适用场景:用户签到、在线状态统计。所有位图命令以 BIT 开头。

基础命令

  1. SETBIT key offset value:设置指定偏移量 bit 的值(0 或 1)
SETBIT dianzan 0 1
SETBIT dianzan 1 0
  1. GETBIT key offset:获取指定偏移位置的 bit 值
GETBIT dianzan 0
GETBIT dianzan 1

逐个 bit 设置比较麻烦,可以直接用SET命令配合十六进制一次性批量设置多个 bit。 SET dianzan "\xF0":十六进制F0,二进制前 4 位为 1,后 4 位为 0。

统计与查找

  • BITCOUNT key:统计位图中值为 1 的 bit 数量
  • BITPOS key bit:查找第一个出现对应 bit 的偏移位置
BITPOS dianzan 0

BITFIELD 位域

在位图中存储小整数,适合保存玩家等级、属性这类小数值。

# 设置无符号8位整数,下标0,值为1
BITFIELD player:1 set u8 #0 1
# 设置无符号32位整数,下标1,值为100
BITFIELD player:1 set u32 #1 100
# 获取无符号32位整数,下标1
BITFIELD player:1 get u32 #1

二、Redis 事务

Redis 事务通过 MULTIEXECDISCARD 实现。

  1. MULTI:开启事务,进入事务模式,后续命令不会立刻执行,全部放入命令队列缓存,返回 QUEUED
  2. EXEC:一次性执行队列里所有命令。
  3. DISCARD:放弃事务,清空队列。

⚠️ 重点:Redis 事务不保证全部命令执行成功。 若队列中某条命令执行报错,不会回滚,其他正常命令依旧执行。 示例:

MULTI
SET K2 v2
GET K2
EXEC

举例:事务里 SET K3 3SET K4 V4SET K5 5,如果 K4 类型错误执行失败,K3、K5 依然会正常写入。

三、Redis 持久化

Redis 内存数据断电丢失,持久化就是把内存数据落盘保存,两种方案:RDB、AOF。

RDB(快照)

在指定时间间隔,把内存全部数据生成快照写入磁盘文件(dump.rdb)。

  • 配置:save 指令配置触发快照条件
  • 查看 rdb 文件:Linux xxd dump.rdb 查看十六进制内容
  • save:主线程执行,会阻塞 Redis
  • bgsave:fork 子进程单独完成快照保存,不阻塞主线程,但依然需要耗时,无法秒级持久化
  • 优点:适合数据备份;缺点:存在数据丢失窗口

AOF(追加日志)

记录每一条写命令,以追加的方式写入 AOF 文件。 开启配置:appendonly yes 重启 Redis 时,重新回放 AOF 内命令恢复数据。

四、主从复制

将一台 Redis(主节点)的数据复制到其他 Redis 实例(从节点),一对多,单向复制:主写,从读。 从节点同步主节点全部数据,保持数据一致。

配置方式:

  1. 命令行临时配置(不推荐):slaveof 主IP 主端口
  2. 修改 redis.conf 配置文件(推荐)

实操步骤:

  1. 复制一份主节点 redis 配置文件
  2. 复制新配置文件作为从节点,修改:端口、pidfile、dbfilename(区分不同实例)
  3. 开启replicaof 127.0.0.1 6379指定主节点地址端口
  4. 分别启动主、从 Redis 实例,使用info replication查看主从状态

支持配置多个从节点。

五、哨兵模式(Sentinel)

解决主节点宕机无法自动恢复的问题,实现自动故障转移。 哨兵是独立运行的进程,三大能力:监控、通知、自动故障转移。

配置实操:

  1. 新建sentinel.conf配置文件
sentinel monitor master 127.0.0.1 6379 1
  1. 启动哨兵:redis-sentinel sentinel.conf
  • 当主节点宕机,哨兵集群内部选举出一个哨兵领导者,自动挑选新主节点,完成故障切换。
  • 多哨兵节点:保证高可用,防止单点故障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值