redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合sorted set)。

1. string(字符串)

字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据、序列化后的数据、JSON化的对象甚至是一张图片。

string命令

说明

set key value

设置指定key的值

setex key seconds value

set expire的简写。将值value关联到key,并将key的过期时间设为seconds

setnx key value

set if not exists的简写。只有在key不存在时设置key的值,key存在时则不设置value值

setrange key offset value

从指定的位置开始将key的值替换为新的字符串,

msetnx key1 value [key2 value2…]

同时设置一个或多个 key-value对

mset key1 value [key2 value2…]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在时才能设置成功;否则只要有一个key存在都会失败

getset key value

将给定key的值设置为value,并返回key的旧值

append key value

如果key存在且是字符串,则将value追加到key原来旧值的末尾。

如果key不存在,则将key设置为value

get key

获取指定key的值

getrange key start end

返回key中字符串值从start开始到end结束的子字符串

mget key1 [key2…]

获取所有(1或多个)给定key的值

incr key

将key中存储的数字值增1。若key不存在,则key的值先被初始化为0,再执行incr操作(只能操作数字类型的数据)

incrby key increment

将key所存储的值加上增量值。若key不存在,则将key的值先初始化为0,在执行incrby命令

decr key

将key中存储的数字值减1

decrby key decrement

将key所存储的值减去减量值。若key不存在,则将key的值先初始化为0,在执行decrby命令

strlen key

返回key所存储的字符串值的长度

2. hash(哈希)

哈希类型是一个string类型的field和value的映射表,hash特别适合用于存储对象。

hash命令

说明

hset key field value

将哈希表key中的字段field的值设为value

hmset key field1 value1 [field2 value2…]

同时将多个field-value(域值对)设置到哈希表key中

hmsetnx key field value

将哈希表中key中的field域的值设置为value,当且仅当field域不存在的时候才设置;否则不设置

hget key field

获取存储在哈希表中指定字段的值

hmget

获取哈希表中一个或多个给定域的值

hgetall key

获取在哈希表中指定key的所有字段和值

hdel key field1 [field2…]

删除哈希表key中的一个或多个指定域field

hexists key field

查看哈希表key中,指定的字段是否存在

hkeys key

查看所有key中的所有field域

hvals key

查看哈希表key中所有field域的值

hlen key

获取哈希表key中field域的数量

hincrby key field increment

为哈希表key中指定的field域的整数值加上增量increment

hincrbyfloat key field increment

为哈希表key中指定的field域的浮点数值加上增量increment

3. list(列表)

list是简单的字符串列表,按照插入顺序排序,值value可以重复。可以添加一个元素到列表的头部(左边)或尾部(右边)

list命令

说明

lpush key value1 [value2…]

将一个或多个value插入到列表key的表头(最左边)

lpushx key value

将一个值value插入到已存在的列表key的表头,列表不存在时无效

rpush key value1 [value2…]

将一个或多个value插入到列表key的表尾(最右边)

rpushx key value

将一个值value插入到已存在的列表key的表尾,列表不存在时无效

lrange key start stop

获取列表key中指定区间(从start开始,到stop结束)内的元素,遵循左闭右闭原则。0表示列表的第一个元素,-1表示列表的最后一个元素。

lpop key

移除并返回列表key的第一个元素

rpop key

移除并返回列表key的最后一个元素

rpoplpush source destination

移除列表key的最后一个元素,并将该元素添加到另一个列表的头元素并返回

blpop key1 [key2] timeout

移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到timeout等待超时或发现可弹出元素为止

blpop key1 [key2] timeout

移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到timeout等待超时或发现可弹出元素为止

brpoplpush source destination timeout

从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

 

lindex key index

获取列表key中下表为指定index的元素

llen key

获取列表key的长度

lrem key count value

从左到右删除列表key中指定个数且与指定value值相等的值

ltrim key start stop

删除指定区域外的元素。也就是让列表只保留指定区域(从start开始,到stop结束)内的元素,不在指定区域内的元素都将被删除

lset key index value

将列表key中下表为index的元素的值设置为value

linsert key before|after pivot value

将值value插入到列表key中位于值pivot之前或之后的位置

4. set(集合)

set是string类型的无需集合。集合成员是唯一的,这就以为着集合中不能出现重复的数据。

redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。

set命令

说明

sadd key member1 [member2…]

将一个或多个member元素加入到集合key中,已经存在于集合的member元素将不会再加入

smemebers key

获取集合key的所有成员元素

sismember key member

判断member元素是否是集合key的成员

scard key

获取集合key里面的元素个数

srem key member1 [member2…]

删除集合key中的一个或多个member元素

srandmember key [count]

随机返回集合中的count个元素

spop key

随机移除并返回集合中的一个元素

smove source destination member

将member元素从source集合移动到destination集合

sinter key1 [key2…]

返回给定所有集合的交集

sinterstore destination key1 [key2…]

返回给定所有集合的交集并存储在destination中

sdiff key1 [key2…]

返回给定所有集合的差集

sdiffstore destination key1 [key2…]

返回给定所有集合的差集并存储在destination中

sunion key1 [key2…]

返回给定所有集合的并集

sunionstore destination key1 [key2…]

返回所有给定集合的并集并存储在destination中

sscan key cursor [match pattern] [count count]

用于迭代集合中键的元素

5. zset(有序集合sorted set)

sorted set和set一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来尾集合中的成员进行从大到小的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

sorted set命令

说明

zadd key score1 member1 [score2 member2…]

向有序集合key中添加一个或多个成员,或者更新已存在成员的分数

zcard key

获取有序集合key的成员个数

zrem key member1 [member2…]

移除有序集合key中的一或多个成员

zremrangebylex key min max

移除有序集合key中给定的字典区间内(从min开始,到max结束)的所有成员

zremrangebyrank key start stop

移除有序集合key中给定的排名区间内(从start开始,到stop结束)所有的成员

zremrangebyscore key min max

移除有序集合中给定的分数区间内(从min开始,到max结束)的所有成员

zrevrange key start stop [withscores]

返回有序集合key中指定区间内(从start开始,到stop结束)的成员。通过索引,分数从高到低

zrevrangebyscore key max min [withscores]

返回有序集合key中指定区间内(从max

开始,到min结束)的成员。分数从低到高排序

zrevrank key member

返回有序集合key中指定成员member的排名,有序集合按分数值递减排序

zscore key member

返回有序集合key中member成员的分数值

zlexcount key min max

获取有序集合中指定字典区间内(从min开始,到max结束)的成员数量

zincrby key increment member

向有序集合key中指定成员的的分数加上增量increment

zrange key start stop [withscores]

返回有序集合中,指定索引区间内(从start开始,到stop结束)的成员

zrangebylex key min max [limit offset count]

返回有序集合中指定字典区间内(从min开始,到max结束)的成员

zrangebyscore key min max [withscores] [limit]

通过分数返回有序集合中指定区间内从min开始,到max结束)的成员

zrank key member

返回有序集合key中指定成员的索引

zinterstore destionation numkeys key1 [key2…]

返回一个或多个有序集合的交集,并将结果集存储在新的有序集合destionation中

zunionstore destionation numkeys key1 [key2…]

返回一个或多个有序集合的并集,并将结果集存储在新的有序集合destionation中

zscan key cursor [match pattern] [count count]

返回有序集合key中的元素(包括元素成员和元素分值)