redis常用知识点之基础数据类型

13次阅读

共计 1743 个字符,预计需要花费 5 分钟才能阅读完成。

概述
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助
基础数据类型
string

释义:字符类型
底层结构:简单的 key-value
限制:每个 string 能够包含的最大容量是 512M
编码格式 1)int:整数值,这个整数值可以使用 long 类型来表示,如果是浮点数,那就用 embstr 或者 raw 编码 2) embstr:字符串值,这个字符串值的长度小于 39 字节 3) raw:字符串值,这个字符串值的长度大于 39 字节
embstr 和 raw 的区别:1)raw 分配内存和释放内存的次数是两次,embstr 是一次 2)embstr 编码的数据保存在一块连续的内存里面
常用命令 get:获取 mget:批量获取 set:设置 mset:批量设置 strlen:长度

hash

释义:哈希表
用途:常用于存储结构化数据
底层结构:哈希表
限制:每个 hash 存储的上限为 2 的 32 次方个
编码格式 1)ziplist:跳表,key 和 value 的字符串长度都小于 64 字节,键值对总数量小于 512 2) hashtable:哈希表,key 和 value 的字符串长度大于 64 字节,键值对总数量大于 512
编码之间的转换 原本是 ziplist 编码的,如果保存的数据长度太大或者元素数量过多,会转换成 hashtable 编码的。

常用命令 基础命令
hset:设定
hmset:批量设定
hget:获取
hmget:批量获取
hexists:存在判断
hsetnx:不存再则设定
hdel:删除
hgetall:获取全部
hlen:长度
其他命令
hincrby:自增长
hkeys:获取全部的 keys
hvals:获取全部的值

list

释义:有序列表
用途:可做简单队列
底层结构:双向链表
限制:一个 list 的最大长度是 2 的 32 次方
编码格式 1)ziplist:字符串元素的长度都小于 64 个字节,总数量少于 512 个 2) linkedlist:字符串元素的长度大于 64 个字节 || 总数量大于 512 个
编码之间的转换 原本是 ziplist 编码的,如果保存的数据长度太大或者元素数量过多,会转换成 linkedlist 编码的

常用命令 基础
llen: 长度
lrange:切片
lpop/rpop:弹出
lpush/rpush:添加
lrem:删除
数组
lindex:按索引检索
lset:按索引赋值
其他
ltrim:保留片段
lpoplpush:移动

set

释义:无序列表(去重)
用途:提供一系列的交集、并集、差集的命令
底层结构:
限制:一个 set 的最大长度是 2 的 32 次方
编码格式 1)intset:保存的元素全都是整数,总数量小于 512 2) hashtable:保存的元素不是整数,总数量大于 512
编码之间的转换 原本是 intset 编码的,如果保存的数据不是整数值或者元素数量大于 512,会转换成 hashtable 编码的。

常用命令 基础
sadd:添加
srem:删除
smembers:获取全部元素
slsmember:判断存在
集合操作
sdiff:去同
sinter:交集
sunion:并集
其他
srandommember:获取随机元素
spop:随机弹出元素
sdiffstore:去同保存
sinterscore:交集保存
sunionscore:并集保存

sortedset

释义:有序集合映射(member-score)
用途:常用作排行榜
底层结构:
限制:一个 set 的最大长度是 2 的 32 次方
编码格式 1)ziplist:元素长度小于 64,总数量小于 128 2) skiplist:元素长度大于 64,总数量大于 128
编码之间的转换 原本是 ziplist 编码的,如果保存的数据长度大于 64 或者元素数量大于 128,会转换成 skiplist 编码 有序集合 (sortset) 对象同时采用 skiplist 和哈希表来实现

常用命令 基础
hset:设定
hmset:批量设定
hget:获取
hmget:批量获取
hexists:存在判断
hsetnx:不存再则设定
hdel:删除
hgetall:获取全部
hlen:长度
其他
hincrby:自增长
hkeys:获取全部的 keys
hvals:获取全部的值

正文完
 0