Redis参考指南:从数据类型到操作指令

1. Redis介绍

Redis是一种高性能的键值存储系统,常用于缓存、消息队列、排行榜/计数器的实现等。Redis支持多种数据类型,如字符串、哈希表、列表、集合等,并提供可靠的持久化机制,可以把数据存储到硬盘上以实现数据的长期保存。

2. Redis数据类型

2.1 字符串

字符串是最基本的数据类型,由一个字符串键和一个字符串值组成。字符串值可以是任何类型的数据,如数字、JSON字符串等。

对于字符串类型,Redis提供了一系列操作指令,如GET、SET、APPEND、INCR等。其中GET和SET指令是最常用的。

GET key   # 获取key对应的值

SET key value # 设置key对应的值为value

需要注意的是,Redis的字符串类型是支持数据类型转换的。比如,可以用GET指令获取一个字符串值,然后再用INCR指令将其转换为数字类型并自增。

SET num 1

INCR num # 这时,num的值为2

2.2 哈希表

哈希表(hash)是由一个键和多个字段组成的关联数组。每个字段都是一个键值对,可以存储多种不同的数据类型。

Redis提供一系列操作指令对哈希表进行操作,比如HSET、HGET、HDEL等。其中HSET指令可以同时设置多个字段。

HSET user id 1 name "Tom" age 20    # 为键为user的哈希表设置id、name和age三个字段的值

HGET user age # 获取user哈希表中age字段的值

HDEL user age # 删除user哈希表中age字段

2.3 列表

列表(list)是由多个元素组成的有序集合。可以向列表的两端添加或删除元素,支持各种操作,如插入、删除、获取元素等。

Redis提供一系列操作指令对列表进行操作,比如LPUSH、RPUSH、LPOP、RPOP、LINDEX等。其中LPUSH和RPUSH指令分别在列表的左/右侧添加一个元素,而LINDEX指令可以获取列表中某个索引位置上的元素。

LPUSH nums 1 2 3  # 往nums列表的左侧添加三个元素

RPUSH nums 4 # 往nums列表的右侧添加一个元素

LPOP nums # 删除nums列表的最左侧元素并返回它的值

LINDEX nums 2 # 获取nums列表中索引位置为2的元素

2.4 集合

集合(set)是由多个不重复元素组成的无序集合。支持添加、删除、判断一个元素是否在集合中等操作。集合是支持交、并、差等集合运算的。

Redis提供一系列操作指令对集合进行操作,比如SADD、SMEMBERS、SREM、SISMEMBER等。其中SADD指令可以批量添加元素,而SMEMBERS指令则可以获取集合中全部元素。

SADD cities "Beijing" "Shanghai" "Guangzhou"   # 往cities集合添加三个元素

SMEMBERS cities # 获取cities集合中全部元素

SREM cities "Guangzhou" # 删除cities集合中的"Guangzhou"元素

SISMEMBER cities "Beijing" # 判断"Beijing"元素是否在cities集合中

2.5 有序集合

有序集合(sorted set)是由多个成员组成的集合,每个成员都关联一个分数(score),分数可以重复。有序集合中的成员按照分数从小到大排序,每个成员都可以通过分数来访问到。

Redis提供一系列操作指令对有序集合进行操作,比如ZADD、ZRANGE、ZREM等。其中ZADD指令可以添加一个或多个成员及其分数,而ZRANGE指令则可以获取给定范围内的元素。

ZADD scores 90 "Tom" 80 "Jerry" 95 "Mary" 85 "Bob"   # 向scores有序集合添加四个成员及其分数

ZRANGE scores 0 1 WITHSCORES # 获取分数最低的两个成员以及它们的分数

ZREM scores "Bob" # 从scores有序集合中删除Bob元素

3. Redis操作指令

3.1 键操作指令

键操作指令用于操作Redis中的各种数据类型,如字符串、哈希表、列表、集合、有序集合等。其中最常用的操作指令包括GET、SET、DEL、EXISTS、KEYS等。

3.1.1 GET

GET指令用于获取键对应的值。

GET key

需要注意的是,如果键不存在,GET指令会返回nil。

3.1.2 SET

SET指令用于设置键对应的值。

SET key value [EX seconds] [PX milliseconds] [NX|XX]

需要注意的是,SET指令可以用来设置各种类型的值,如字符串、哈希表、列表、集合、有序集合等。

3.1.3 DEL

DEL指令用于删除一个或多个键。

DEL key [key ...]

3.1.4 EXISTS

EXISTS指令用于判断一个键是否存在。

EXISTS key

需要注意的是,EXISTS指令返回1表示键存在,返回0表示键不存在。

3.1.5 KEYS

KEYS指令用于查找所有符合给定模式的键。

KEYS pattern

3.2 哈希表操作指令

哈希表操作指令用于对Redis中的哈希表进行操作。其中最常用的操作指令包括HSET、HGET、HGETALL、HDEL、HKEYS、HVALS等。

3.2.1 HSET

HSET指令用于设置哈希表中某个字段的值。

HSET key field value

3.2.2 HGET

HGET指令用于获取哈希表中某个字段的值。

HGET key field

3.2.3 HGETALL

HGETALL指令用于获取哈希表中所有字段的值。

HGETALL key

3.2.4 HDEL

HDEL指令用于删除哈希表中的一个或多个字段。

HDEL key field [field ...]

3.2.5 HKEYS

HKEYS指令用于获取哈希表中所有字段的键。

HKEYS key

3.2.6 HVALS

HVALS指令用于获取哈希表中所有字段的值。

HVALS key

3.3 列表操作指令

列表操作指令用于对Redis中的列表进行操作。其中最常用的操作指令包括LPUSH、RPUSH、LPOP、RPOP、LLEN、LINDEX等。

3.3.1 LPUSH

LPUSH指令用于在列表的左侧添加一个或多个元素。

LPUSH key element [element ...]

3.3.2 RPUSH

RPUSH指令用于在列表的右侧添加一个或多个元素。

RPUSH key element [element ...]

3.3.3 LPOP

LPOP指令用于从列表的左侧删除一个元素并返回它的值。

LPOP key

3.3.4 RPOP

RPOP指令用于从列表的右侧删除一个元素并返回它的值。

RPOP key

3.3.5 LLEN

LLEN指令用于获取列表的元素个数。

LLEN key

3.3.6 LINDEX

LINDEX指令用于获取列表中某个索引位置上的元素。

LINDEX key index

3.4 集合操作指令

集合操作指令用于对Redis中的集合进行操作。其中最常用的操作指令包括SADD、SMEMBERS、SREM、SISMEMBER、SCARD、SINTER等。

3.4.1 SADD

SADD指令用于向集合中添加一个或多个元素。

SADD key member [member ...]

3.4.2 SMEMBERS

SMEMBERS指令用于获取集合中所有的元素。

SMEMBERS key

3.4.3 SREM

SREM指令用于从集合中删除一个或多个元素。

SREM key member [member ...]

3.4.4 SISMEMBER

SISMEMBER指令用于判断一个元素是否在集合中。

SISMEMBER key member

3.4.5 SCARD

SCARD指令用于获取集合中元素的个数。

SCARD key

3.4.6 SINTER

SINTER指令用于获取多个集合的交集。

SINTER key [key ...]

3.5 有序集合操作指令

有序集合操作指令用于对Redis中的有序集合进行操作。其中最常用的操作指令包括ZADD、ZRANGE、ZREM、ZSCORE、ZINTERSTORE等。

3.5.1 ZADD

ZADD指令用于向有序集合中添加一个或多个成员及其分数。

ZADD key score member [score member ...]

3.5.2 ZRANGE

ZRANGE指令用于获取有序集合中给定范围内的成员。

ZRANGE key start stop [WITHSCORES]

3.5.3 ZREM

ZREM指令用于从有序集合中删除一个或多个成员。

ZREM key member [member ...]

3.5.4 ZSCORE

ZSCORE指令用于获取有序集合中某个成员的分数。

ZSCORE key member

3.5.5 ZINTERSTORE

ZINTERSTORE指令用于获取多个有序集合的交集,并将结果保存到新的有序集合中。

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

4. 总结

Redis是一种高性能的键值存储系统,支持多种数据类型,如字符串、哈希表、列表、集合、有序集合等,并提供可靠的持久化机制。Redis操作指令非常丰富,可以轻松实现各种常见的数据存储和处理需求。在使用Redis时,要注意选择合适的数据类型和操作指令,以充分发挥Redis的性能和功能。

数据库标签