本文主要介绍Redis中键的操作、物种数据类型的操作。
一、键-key
常用命令如下:
序号 | 命令及描述 |
---|---|
1 | DEL key 该命令用于在 key 存在时删除 key。 |
2 | DUMP key 序列化给定 key ,并返回被序列化的值。 |
3 | EXISTS key 检查给定 key 是否存在。 |
4 | EXPIRE key seconds 为给定 key 设置过期时间,以秒计。 |
5 | EXPIREAT key timestamp ,EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
6 | PEXPIRE key milliseconds,设置 key 的过期时间,以毫秒计。 |
7 | PEXPIREAT key milliseconds-timestamp ,设置 key 过期时间的时间戳(unix timestamp) ,以毫秒计 |
8 | KEYS pattern 查找所有符合给定模式( pattern)的 key 。 |
9 | MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中。 |
10 | PERSIST key 移除 key 的过期时间,key 将持久保持。 |
11 | PTTL key 以毫秒为单位返回 key 的剩余的过期时间。 |
12 | TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
13 | RANDOMKEY 从当前数据库中随机返回一个 key 。 |
14 | RENAME key newkey修改 key 的名称 |
15 | RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
16 | TYPE key 返回 key 所储存的值的类型。 |
二、字符串-string
常用命令如下:
命令 | 描述 |
---|---|
SET key value | 此命令用于设置指定键的值。 |
GET key | 此命令用于检索键的值。 |
GETRANGE key start end | 此命令用于获取存储在键中的字符串的子字符串。 |
GETSET key value | 此命令用于设置键的字符串值并返回其旧值。 |
GETBIT key offset | 此命令用于返回存储在key的字符串值中的偏移量处的位值。 |
MGET key1 [key2 …] | 此命令用于获取所有给定键的值 |
SETBIT key offset value | 此命令用于设置或清除存储在key的字符串值中的偏移位 |
SETEX key secodes value | 此命令用于设置key到期时的值 |
SETNX key value | 仅当key不存在时,此命令用于设置key的值 |
SETRANGE key offset value | 此命令用于覆盖从指定偏移量开始的键处的字符串部分 |
STRLEN key | 此命令用于检索存储在key中的值的长度 |
MSET key value [key value …] | 此命令用于将多个键设置为多个值 |
MSETNX key value [key value …] | 仅当没有任何键存在时,此命令用于将多个键设置为多个值 |
PSETEX key milliseconds value | 此命令用于设置key的值和到期时间(以毫秒为单位) |
INCR key | 此命令用于将键的整数值递增1 |
INCRBY key increment | 此命令用于按给定量递增键的整数值 |
INCRBYFLOAT key increment | 此命令用于按给定的量增加键的浮点值 |
DECR key | 此命令用于将键的整数值递减1 |
DECRBY key decrement | 此命令用于按给定数量递减键的整数值 |
APPEND key value | 此命令用于将值附加到键 |
三、列表-list
Redis列表是按插入顺序排序的字符串列表。可以在列表的头部(左边)或尾部(右边)添加元素。
列表可以包含超过40亿个元素。
命令 | 描述 |
---|---|
BLPOP key1 [key2] timeout | 删除和获取列表中的第一个元素,或阻塞直到一个元素可用。 |
BRPOP key1 [key2] timeout | 删除和获取列表中的最后一个元素,或阻塞直到一个元素可用。 |
BRPOPLPUSH source destination timeout | 从列表中弹出一个值,将其推送到另一个列表并返回它; 或阻止,直到有一个可用。 |
LINDEX key index | 通过索引从列表中获取元素。 |
LINSERT key before|after pivot value | 在列表中的另一个元素之前或之后插入元素。 |
LLEN key | 获取列表的长度。 |
LPOP key | 删除和获取列表中的第一个元素。 |
LPUSH key value1 [value2] | 将一个或多个值添加到列表中。 |
LPUSHX key value | 仅当列表存在时,将值添加到列表中。 |
LRANGE key start stop | 从列表中获取一系列元素。 |
LREM key count value | 从列表中删除元素。 |
LSET key index value | 通过索引设置列表中元素的值。 |
LTRIM key start stop | 将列表修剪到指定范围。 |
RPOP key | 删除和获取列表中的最后一个元素。 |
RPOPLPUSH source destination | 删除列表中的最后一个元素,将其附加到另一个列表并返回它。 |
RPUSH key value1 [value2] | 将一个或多个值附加到列表。 |
RPUSHX key value | 仅当列表存在时,用于将值附加到列表。 |
四、集合-set
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中没有重复的数据。
在Redis中,添加、删除和查找的时间复杂都是O(1)(不管Set中包含多少元素)。
集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。
命令 | 描述 |
---|---|
SADD key member1 [member2] | 将一个或多个成员添加到集合中。 |
SCARD key | 获取集合中的成员数量。 |
SDIFF key1 [key2] | 返回给定所有集合的差集。 |
SDIFFstore destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中。 |
SINTER key1 [key2] | 返回集合交集。 |
SINTERSTORE destination key1 [key2] | 返回给定所有集合的交集并存储在 destination 中。 |
SISMEMBER key member | 判断 member 元素是否是集合 key 的成员。 |
SMOVE source destination member | 将 member 元素从 source 集合移动到 destination 集合。 |
SPOP key | 移除并返回集合中的一个随机元素。 |
SRANDMEMBER key [count] | 返回集合中一个或多个随机数。 |
SREM key member1 [member2] | 移除集合中一个或多个成员。 |
SUNION key1 [key2] | 返回所有给定集合的并集。 |
SUNIONSTORE destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中。 |
SSCAN key cursor [match pattern] [count count] | 迭代集合中的元素。 |
五、有序集合-zset
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。
命令 | 描述 |
---|---|
ZADD key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
ZCARD key | 获取有序集合的成员数 |
ZCOUNT key min max | 计算在有序集合中指定区间分数的成员数 |
ZINCRBY key increment member | 有序集合中对指定成员的分数加上增量 increment |
ZINTERSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 |
ZLEXCOUNT key min max | 在有序集合中计算指定字典区间内成员数量 |
ZRANGE key start stop [WITHSCORES] | 通过索引区间返回有序集合成指定区间内的成员 |
ZRANGEBYLEX key min max [LIMIT offset count] | 通过字典区间返回有序集合的成员 |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通过分数返回有序集合指定区间内的成员 |
ZRANK key member | 返回有序集合中指定成员的索引 |
ZREM key member [member …] | 移除有序集合中的一个或多个成员 |
ZREMRANGEBYLEX key min max | 移除有序集合中给定的字典区间的所有成员 |
ZREMRANGEBYRANK key start stop | 移除有序集合中给定的排名区间的所有成员 |
ZREMRANGEBYSCORE key min max | 移除有序集合中给定的分数区间的所有成员 |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定区间内的成员,通过索引,分数从高到底 |
ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
ZREVRANK key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
ZSCORE key member | 返回有序集中,成员的分数值 |
ZUNIONSTORE destination numkeys key [key …] | 计算给定的一个或多个有序集的并集,并存储在新的 key 中 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成员和元素分值) |
六、哈希-hash
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。每个哈希键中可以存储多达40亿个字段值对。
命令 | 描述 |
---|---|
HDEL key field1 [field2] | 删除一个或多个哈希字段。 |
HEXISTS key field | 确定是否存在哈希字段。 |
HGET key field | 获取存储在指定键中的哈希字段的值。 |
HGETALL key | 获取存储在指定键的散列中的所有字段和值 |
HINCRBY key field increment | 按给定数字递增散列字段的整数值 |
HINCRBYFLOAT key field increment | 将散列字段的浮点值递增给定量 |
HKEYS key | 获取哈希中的所有字段 |
HLEN key | 获取散列中的字段数 |
HMGET key1 [field2] | 获取所有给定哈希字段的值 |
HMSET key field1 value1 [field2 value2] | 将多个哈希字段设置为多个值 |
HSET key field | 设置哈希字段的字符串值 |
HSETNX key field | 仅当字段不存在时,设置哈希字段的值 |
HVALS key | 获取哈希值中的所有值 |