Redis 基础:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
(创建页面,内容为“===基本类型:=== ====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[];     …”)
 
无编辑摘要
第52行: 第52行:
*Hyperloglog
*Hyperloglog
*Bitmap
*Bitmap
=== Redis 持久化的方式 ===
在 redis.conf 中配置 RDB。
save <seconds> <changes>
==== RDB ====
RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘
* 手动触发:通过执行 SAVE 或 BGSAVE 命令
* 自动触发:基于 Redis.conf 中的 save 指令设置的条件
redis 配置文件 save 指令设置:
save 3600 1        # 3600 秒内如果超过 1 个 key 被修改则生成 RDB
save 300 100      # 300 秒内如果超过 100 个 key 被修改则生成 RDB
当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。
# AOF (Append Only File)
# 混合持久化


[[分类:Develop]]
[[分类:Develop]]
[[分类:DB]]
[[分类:DB]]
[[分类:OtherDB]]
[[分类:OtherDB]]

2024年8月6日 (二) 11:14的版本

基本类型:

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(链表)
  • 应用场景:消息队列,文章列表
  1. Stack(栈): lpush + lpop
  2. Queue(队列): lpush + rpop
  3. Capped Collection(有限集合): lpush + ltrim
  4. 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。

save <seconds> <changes>

RDB

RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘

  • 手动触发:通过执行 SAVE 或 BGSAVE 命令
  • 自动触发:基于 Redis.conf 中的 save 指令设置的条件
redis 配置文件 save 指令设置: 
save 3600 1        # 3600 秒内如果超过 1 个 key 被修改则生成 RDB
save 300 100       # 300 秒内如果超过 100 个 key 被修改则生成 RDB

当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。

  1. AOF (Append Only File)
  2. 混合持久化