Redis 基础:修订间差异
跳到导航
跳到搜索
(未显示同一用户的1个中间版本) | |||
第53行: | 第53行: | ||
*Bitmap | *Bitmap | ||
=== Redis | === Redis 持久化方式 === | ||
将内存中的数据保存到硬盘或其他长期存储介质中,在 redis.conf 中配置。 | |||
==== RDB ==== | ==== RDB ==== | ||
RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘 | RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘 | ||
第68行: | 第60行: | ||
* 自动触发:基于 Redis.conf 中的 save 指令设置的条件 | * 自动触发:基于 Redis.conf 中的 save 指令设置的条件 | ||
当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。 | 当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。 | ||
save <seconds> <changes> # save 600 1: 600 秒内如果超过 1 个 key 被修改则生成 RDB | |||
# AOF (Append Only File) | stop-writes-on-bgsave-error no # 如果后台保存数据出现错误,Redis 将不停止写入操作 | ||
rdbcompression yes # 在保存数据前先对其进行压缩 | |||
rdbchecksum yes # 在 RDB 文件末尾添加一个 CRC64 校验和 | |||
sanitize-dump-payload yes # 在加载数据时检查这些数据的安全性 | |||
dbfilename dump.rdb # RDB 文件名 (默认是 dump.rdb) | |||
rdb-del-sync-files yes # 主节点没有启用 RDB 和 AOF 持久化,Redis 自动删除复制相关 RDB 文件 | |||
dir /var/redis/data/ # RDB 文件存放的目录,默认值 ./ (/var/lib/redis 启动时的工作目录) | |||
==== AOF ==== | |||
AOF (Append Only File) 持久化方式旨在持续地保存服务器上的所有修改操作。每当执行一个会改变数据的命令时,Redis 都会将该命令写入 AOF 文件中。这样,当 Redis 需要恢复数据时,只需执行 AOF 文件中的命令就可以恢复到原来的状态。AOF是一个文本文件,里面保存了一系列的命令。 | |||
appendonly yes # default no | |||
appendfilename appendonly.aof # default | |||
appendfsync everysec # default | |||
no-appendfsync-on-rewrite yes # 避免主进程 fsync 延迟 | |||
同步策略: | 同步策略: | ||
* always:每次有命令写入时都立即同步 | * always:每次有命令写入时都立即同步 | ||
第77行: | 第79行: | ||
* no:让操作系统决定最佳的同步时间 | * no:让操作系统决定最佳的同步时间 | ||
# | ==== 混合持久化 ==== | ||
Redis 4.0 引入的持久化策略,结合了 RDB 的快速恢复和 AOF 的数据完整性的优点,它首先以 RDB 格式保存当前数据状态,然后继续以 AOF 格式记录新的写操作,确保数据完整性并优化恢复速度。 | |||
# 同时启用 RDB 和 AOF 两种持久化 | |||
aof-use-rdb-preamble yes | |||
[[分类:Develop]] | [[分类:Develop]] | ||
[[分类:DB]] | [[分类:DB]] | ||
[[分类:OtherDB]] | [[分类:OtherDB]] |
2024年8月6日 (二) 13:35的最新版本
基本类型:
String(字符串)
set key value/get key
- Max: 512M
- 内部编码有3种,int(8字节长整型)、embstr(<=39 Byte)、raw(>39 Byte)
- 应用场景: 共享session、分布式锁、计数器、限流
- C 语言的字符串是 char[] 实现的,而 Redis 使用 SDS(Simple Dynamic String)结构:
struct sdshdr { unsigned int len; // 字符串长度 unsigned int free; // 空闲长度 char buf[]; // 字符串 }
Hash(哈希)
哈希类型是指 value 本身又是一个键值对(k-v)结构
hset key field value/hget key field/hscan key
- 底层编码:ziplist(压缩列表) 、hashtable(哈希表)
- 应用场景:缓存用户信息等
- 注意:哈希元素比较多的话,使用 hgetall 可能会导致 Redis 阻塞,可以使用 hscan。若只是获取部分 field,使用 hmget
List(列表)
有序多个元素,最多可以存储 2^32-1 个元素
lpush key value[value ...] 、lrange key start end
- 底层编码:ziplist(压缩列表)、linkedlist(链表)
- 应用场景:消息队列,文章列表
- Stack(栈): lpush + lpop
- Queue(队列): lpush + rpop
- Capped Collection(有限集合): lpush + ltrim
- Message Queue(消息队列): lpush + brpop
Set(集合)
元素不重复
sadd key element[element...]、smembers key
- 底层编码:intset(整数集合)、hashtable(哈希表)
- 应用场景:用户标签、生成随机数抽奖、社交需求
- 注意:元素比较多的话,使用 smembers 和 lrange、hgetall 可能会导致 Redis 阻塞,可以使用 sscan
zset(有序集合)
zadd key score member[score member...],zrank key member
- 底层编码:ziplist(压缩列表)、skiplist(跳跃表)
- 应用场景:排行榜,社交需求(如用户点赞)
数据结构类型
- Geospatial
- Hyperloglog
- Bitmap
Redis 持久化方式
将内存中的数据保存到硬盘或其他长期存储介质中,在 redis.conf 中配置。
RDB
RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘
- 手动触发:通过执行 save 或 bgsave 命令
- 自动触发:基于 Redis.conf 中的 save 指令设置的条件
当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。
save <seconds> <changes> # save 600 1: 600 秒内如果超过 1 个 key 被修改则生成 RDB stop-writes-on-bgsave-error no # 如果后台保存数据出现错误,Redis 将不停止写入操作 rdbcompression yes # 在保存数据前先对其进行压缩 rdbchecksum yes # 在 RDB 文件末尾添加一个 CRC64 校验和 sanitize-dump-payload yes # 在加载数据时检查这些数据的安全性 dbfilename dump.rdb # RDB 文件名 (默认是 dump.rdb) rdb-del-sync-files yes # 主节点没有启用 RDB 和 AOF 持久化,Redis 自动删除复制相关 RDB 文件 dir /var/redis/data/ # RDB 文件存放的目录,默认值 ./ (/var/lib/redis 启动时的工作目录)
AOF
AOF (Append Only File) 持久化方式旨在持续地保存服务器上的所有修改操作。每当执行一个会改变数据的命令时,Redis 都会将该命令写入 AOF 文件中。这样,当 Redis 需要恢复数据时,只需执行 AOF 文件中的命令就可以恢复到原来的状态。AOF是一个文本文件,里面保存了一系列的命令。
appendonly yes # default no appendfilename appendonly.aof # default appendfsync everysec # default no-appendfsync-on-rewrite yes # 避免主进程 fsync 延迟
同步策略:
- always:每次有命令写入时都立即同步
- everysec:每秒同步一次,权衡安全性和效率的策略
- no:让操作系统决定最佳的同步时间
混合持久化
Redis 4.0 引入的持久化策略,结合了 RDB 的快速恢复和 AOF 的数据完整性的优点,它首先以 RDB 格式保存当前数据状态,然后继续以 AOF 格式记录新的写操作,确保数据完整性并优化恢复速度。
# 同时启用 RDB 和 AOF 两种持久化 aof-use-rdb-preamble yes