Redis 可以理解为一个大号的 Map,其中所有的数据都采用 key:value 的形式维护,在 Redis 中,一个 key 总是对应一个 value。其中 key 永远是字符串,而一般提到 Redis 的数据类型,指的是其存储的 value 的数据类型。下面介绍 Redis 常见的数据类型,并简单介绍常见的相关指令。
string 是最基本的数据类型,其他几个数据类型底层也是通过 string 来实现的。
string 有以下几个特点:
set key value
,当 key 已存在时会更新其对应的值,返回 OK 表示执行成功,其他很多命令执行成功时也会返回 OK,不再赘述。get key
,当 key 不存在时返回 nil。mset key value [key value ...]
。 [key value ...]
表示该命令的参数可以是任意数量的 key、value 对,这种写法与 Redis 官方文档相同,本文也多次使用这种方式。mget key [key ...]
,返回的顺序与参数指定的顺序相同,如果参数中传入了不存在的 key,返回结果中对应位置也会有一个 nil。del key [key ...]
,与 MySQL 类似,返回结果是一个 Integer,表示改动的记录数量,其他很多命令执行成功也会返回 OK,不再赘述。strlen key
。append key value
,追加完成后返回新的字符串长度。incr key
,如果 key 对应的值不是纯数字字符串、或自增后会超过64位长整型范围,该指令会报错。incrby key increment
,increment 自增系数如果是负数也可以实现自减的操作。incrbyfloat key increment
decr key
decrby key decrement
哈希表 hash 用于分组存储数据,可类比编程语言中的哈希数据结构,一个 key 对应一整个哈希表,哈希表中可以有多个字段 field 和字段的对应值 value,字段名和字段值都是字符串,受 string 类型特点的约束。
哈希结构有以下几个特点:
hset key field value [field value ...]
。此外还有功能类似的 hmset
命令,在 Redis 官方文档中被标记为已废弃。hget key field
hgetall key
hmget key field [feild ...]
hlen key
hexists key field
hdel key field [field ...]
hkeys key
hvals key
hincrby key field increment
,与前面出现的自增指令相同,increment 为负值时可以实现自减的功能。hincrbyfloat key field increment
列表 list 用于区分数据进出的顺序,类似与编程语言中的双端队列,一个 key 对应一个列表,列表中存放的是元素 element,每个元素都是由 string 构成的,受 string 类型特点的约束。通过专门的、仅使用一部分命令可分别实现栈或队列。
lpush key element [element ...]
和右侧添加 rpush ley element [element ...]
,由于列表结构的特殊性,这两条命令不能通过覆盖原始值的方式实现修改的功能。lindex key index
,这条命令没有对应的 rindex
命令,可以理解为此处的 l 是 list 的缩写,而不是 left,下面两条同理。llen key
lrange key start stop
lpop key
和 rpop key
lrem key count element
。假如列表 mylist 中有几个元素如下:a b c a b c a b c,执行命令 lrem mylist 2 b
后,队列中剩下的元素是 a c a c a b c。集合 set 与哈希结构类似,一个 key 对应一个集合,集合中存放的是成员 member,成员都是由 string 组成的,受 string 类型特点的约束。其底层实现方式就是在哈希的字段名上存放数据、而所有的字段值都是 nil。
集合结构有以下几个特点:
sdd key member [member ...]
,当指定成员存在时,既不必更新也不会报错。smembers key
srem key member [member ...]
scard key
sismember key member
,返回 1 表示存在、返回 0 表示不存在。srandmember key [count]
spop key [count]
sinter key [key ...]
sunion key [key ...]
sdiff key [key ...]
sinterstore destination key [key ...]
,destination 是目标集合的 key。sunionstore destination key [key ...]
sdiffstore destination key [key ...]
smove source destination member
有序集合 sorted_set (也缩写为 zset)是在 set 的基础上,又增加了用于排序的分数 score。
除成员可根据分数排序外,有序集合具有普通集合的全部特点。有序集合的分数有以下特点:
zadd key score member [score member ...]
,当 member 已存在时,这条指令可以用于更新分数。zcard key
score key member
zrem key member [member ...]
zrange key start stop [WITHSORES]
,如果入参有 withscores 返回结果也会带上成员对应的分数。zrevrange key start stop [WITHSORES]
zremrangebyrank key start stop
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
。操作分数时,默认是闭区间,可加上符号 (
表示开区间。[LIMIT offset count]
是偏移量和计数的限制。zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]
zremrangebyscore key min max
zcount key min max
zrank key member
zrevrank key member
zincrby key increment member
zinterstore destination numkeys key [key ...]
zunionstore destination numkeys key [key ...]
原文:https://www.cnblogs.com/cncsl/p/14891640.html