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 | 找出位于指定范围内的元素,中心点由给定的位置元素决定 |