跳至主要內容

Redis数据类型和命令


Redis数据类型和命令

String

String是Redis基本的数据类型,一个Key对应一个Value。String类型的值最大能存储512MB数据。

Redis的String数据类型支持丰富的操作命令,常用的String操作命令如下表所示:

命令说明
set设置指定key的值
get获取指定key的值
setnx只有在key不存在时才设置key的值
getrange返回key中字符串值的子字符
mset同时设置一个或多个key-value对
setex将值value关联到key,并将key的过期时间设为seconds(以秒为单位)
gebit获取key所对应的字符串值指定偏移量上的位(bit)
sebit设置或清除Key所对应的字符串值指定偏移量上的位
deer将Key中存储的数字值减1
deerby将Key所对应的值减去给定的减量值
Strlen返回key所储存的字符串值的长度
msetnx同时设置一个或多个Key-value对,在且仅在所有给定的key都不存在时
Incrby将Key所存储的值加上给定的增量值
incrbyfloat将key所存储的值加上给定的浮点增量值
setrange用value参数覆写给定key所存储的字符串值,从偏移量offset开始
psetex和setex相似,但它以毫秒为单位设置key的生存时间,而不是像setex那样,以秒为单位
append如果key已经存在并且是一个字符串,则append将value追加到该字符串的末尾
getset将给定Key的值设为value,并返回key的旧值
mget获取(一个或多个)给定的key的值
incr将在key中存储的数字值加一

Hash

Redis Hash是一个键值对集合。Redis的Hash列表支持的操作如下表所示:

命令说明
hmset同时将多个field-value对设置到散列表key中
hmget获取所有给定字段的值
hset将散列表key中field字段的值设为value
hgetall获取散列表中指定key的所有字段和值
hget获取存储在散列表中指定字段的值
hexists查看散列表key中指定的字段是否存在
hincrby为散列表key中指定字段的整数值加上增量increment
hlen获取散列表中字段的数量
hdel删除一个或多个散列表字段
hvals获取散列表中的所有值
hincrbyfloat为散列表key中指定字段的浮点数值加上增量increment
hkeys获取所有散列表中的字段
hsetnx只有在字段field不存在时,才设置散列表字段的值

List

Redis List是简单的字符串列表,按照插入顺序排序。我们可以添加一个元素到列表的头部或者尾部。列表最多可存储2 31 -1个元素。

命令说明
lindex通过索引获取列表中的元素
rpush在列表中添加一个或多个值
lrange获取列表指定范围内的元素
rpoplpush移除列表的最后一个元素,将该元素添加到另一个列表中并返回
blpop移除并获取列表的第1个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可移除的元素
brpop移除并获取列表的最后一个元素,如果列表没有元素,则会阻塞列表直到等待超时或发现可以出的元素
brpoplpush从列表中弹出一个值,将弹出的元素插入另一个列表中并返回它;如果列表没有元素,则会阻塞列表直到等待超时或发现可移除的元素
lrem移除列表元素
llen获取列表长度
ltrim对一个列表进行修剪,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
lpop移除并获取列表的第1个元素
lpushx将一个或多个值插入已存在的列表头部
linsert在列表的元素前或者后插入元素
rpop移除并获取列表的最后一个元素
lset通过索引设置列表元素的值
lpush将一个或多个值插入列表头部
rpushx为已存在的列表添加值

Set

Set是String类型的无序集合。集合是通过散列表实现的,所以添加、删除、查找的复杂度都是0(1)。Set支持的操作如下:

命令说明
sunion返回所有给定集合的并集
scard获取集合的成员数
srandmember返回集合中的一个或多个随机数
smembers返回集合中的所有成员
sinter返回给定所有集合的交集
srem移除集合中的一个或多个成员
smove将member元素从source集合移动到destination集合
sadd向集合中添加一个或多个成员
sismember判断member元素是否是集合key的成员
sdiffstore返回给定集合的差集并将其存储在destination中
sdiff返回给定集合的差集
sscan迭代集合中的元素
sinterstore返回给定集合的交集并将其存储在destination中
sunionstore将所有给定集合的并集都存储在destination集合中
spop移除并返回集合中的一个随机元素

ZSet

Redis ZSet和Set一样也是String类型元素的集合,且不允许有重复的成员,不同的是,每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序的。Redis ZSet支持的操作如下表所示:

命令说明
zrevrank返回有序集合中指定成员的排名,有序集合中的成员按分数值递减(从大到小)排序
zlexcount在有序集合中计算指定字典区间内的成员数值
zunionstore计算给定的一个或多个有序集的并集,并将其存储在新的Key中
zremrangebyrank移除有序集合中给定的排名区间的所有成员
zcard获取有序集合的成员数
zrem移除有序集合中的一个或多个成员
zinterstore计算给定的一个或多个有序集合的交集并将结果集存储在新的有序集合key中
zrank返回有序集合中指定成员的索引
zincrby在有序集合中对指定成员的分数加上增量increment
zrangebyscore通过分数返回有序集合指定区间内的成员
zrangebylex通过字典区间返回有序集合的成员
zscore返回有序集合中成员的分数值
zremrangebyscore移除有序集合中给定分数区间内的所有成员
zscan迭代有序集合中的元素(包括元素成员和元素分值)
zrevrangebyscore返回有序集合中指定分数区间内的成员,分数从高到低排序
zremrangebylex移除有序集合中给定字典区间内的所有成员
zrevrange返回有序集合中指定区间内的成员,通过索引按分数从高到低排序
zrange通过索引区间返回有序集合成指定区间内的成员
zcount计算有序集合中指定分数区间内的成员数量
zadd向有序集合添加一个或多个成员,或者更新已存在成员的分数

Bitmap

通过操作二进制位记录数据。Redis Bitmap支持的操作如下表所示:

命令说明
setbit设置bitmap值
getbit获取bitmap值
bitcount获取指定范围内值为1的个数
destkey对bitmap进行操作,可以是and(交集)、or(并集)、not(非集)、xor(异或)

HyperLogLog

被用于估计一个Set中元素数量的概率性的数据结构。Redis HyperLogLog支持的操作如下表所示:

命令说明
pfadd添加指定的元素到hyperloglog中
pfcount返回给定hyperloglog的基数估算值
pfmerge将多个hyperloglog合并为一个hyperloglog

Geospatial

用于地理空间关系计算,支持的操作如下表所示:

命令说明
geohash返回一个或多个位置元素的geohash表示
geopos从key里返回所有给定位置的元素的位置(经度和维度)
geodist返回两个给定位置之间的距离
georadius以给定的经纬度为中心,找出某一半径内的元素
geoadd将指定的地理空间位置(维度、经度、名称)添加到指定的Key中
georadiusbymember找出位于指定范围内的元素,中心点由给定的位置元素决定
上次编辑于:
贡献者: Neil