查看“Redis 基础”的源代码
←
Redis 基础
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
===基本类型:=== ====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。 save <seconds> <changes> # save 600 1: 600 秒内如果超过 1 个 key 被修改则生成 RDB stop-writes-on-bgsave-error # 如果后台保存数据出现错误,Redis 将停止所有写入操作 rdbcompression # 在保存数据前先对其进行压缩 rdbchecksum # 在 RDB 文件末尾添加一个 CRC64 校验和 sanitize-dump-payload # 在加载数据时检查这些数据的安全性 dbfilename rdb-del-sync-files dir ==== RDB ==== RDB (Redis Database Snapshot) 将当前内存中的数据快照(snapshot)保存到硬盘 * 手动触发:通过执行 SAVE 或 BGSAVE 命令 * 自动触发:基于 Redis.conf 中的 save 指令设置的条件 当 Redis 重新启动时,如果配置为使用 RDB 持久化,它会查找 RDB 文件,并加载。由于 RDB 文件是一个紧凑的二进制表示形式,数据加载非常快。 # AOF (Append Only File) # 混合持久化 [[分类:Develop]] [[分类:DB]] [[分类:OtherDB]]
返回
Redis 基础
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息