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的性能和功能。