菜鸟科技网

Redis常用命令有哪些?

Redis(Remote Dictionary Server)作为一个高性能的键值存储系统,其强大的功能很大程度上得益于丰富多样的命令集,这些命令涵盖了数据操作、服务器管理、集群配置等多个方面,使得Redis能够满足从简单缓存到复杂业务逻辑的多样化需求,下面将详细介绍Redis的核心命令,涵盖不同数据类型及其操作。

Redis常用命令有哪些?-图1
(图片来源网络,侵删)

从最基础的键(Key)操作开始,键是Redis中数据的基本标识符,对键的管理是使用Redis的第一步。KEYS pattern命令用于查找所有符合给定模式pattern的键,例如KEYS user:*会查找所有以"user:"开头的键,需要注意的是,KEYS命令会阻塞服务器,在生产环境中应谨慎使用,尤其是在键数量较多时,为了更高效地查找,推荐使用SCAN cursor [MATCH pattern] [COUNT count]命令,它基于游标进行迭代式查找,避免了阻塞。EXISTS key用于检查键是否存在,存在则返回1,否则返回0。TYPE key返回键所存储的值的类型,如string、hash、list、set、zset等。DEL key [key ...]用于删除一个或多个键,删除成功返回被删除键的数量。TTL key返回键的剩余生存时间(以秒为单位),当键不存在或没有设置过期时间时返回-1。EXPIRE key seconds为键设置过期时间,单位为秒,例如EXPIRE mykey 60表示mykey将在60秒后自动删除。PERSIST key移除键的过期时间,使其永不过期。

接下来是字符串(String)类型相关的命令,String是Redis最基本的数据类型,可以存储文本、JSON、序列化对象或二进制数据(最大512MB)。SET key value [EX seconds|PX milliseconds] [NX|XX]用于设置键的值,EXPX选项用于设置过期时间,NX表示键不存在时才设置,XX表示键存在时才设置,例如SET mykey "hello" EX 10mykey设置为"hello"并10秒后过期。GET key获取键的值,如果键不存在则返回nil。MGET key [key ...]批量获取多个键的值,返回一个值的列表。MSET key value [key value ...]批量设置多个键值对。INCR key将键存储的值加1,如果键不存在则先初始化为0再执行加1操作,要求值必须是整数。DECR key将键存储的值减1,同样要求值为整数。INCRBY key increment将键存储的值增加指定的increment值,DECRBY key decrement则减少指定的decrement值。APPEND key value将指定的value追加到键当前值的末尾,如果键不存在则相当于SET key value

哈希(Hash)类型是Redis中用于存储对象结构的数据类型,其值本身是一个键值对的集合,适合存储对象信息。HSET key field value将哈希表key中的字段field的值设置为value,如果字段field是哈希表中的一个新建字段,并且哈希表不存在,则创建一个新的哈希表并进行HSET操作。HGET key field获取哈希表中指定字段的值。HGETALL key获取哈希表中所有字段和值。HDEL key field [field ...]删除哈希表中的一个或多个字段。HEXISTS key field检查哈希表中是否存在指定的字段。HINCRBY key field increment将哈希表中指定字段的值加上指定的增量increment。HKEYS key获取哈希表中所有字段。HVALS key获取哈希表中所有值。HLEN key获取哈希表中字段的数量。

列表(List)类型是按照插入顺序排序的字符串集合,其元素可以重复,常用于实现消息队列、最新列表等场景。LPUSH key value [value ...]将一个或多个值value插入到列表key的表头(左边)。RPUSH key value [value ...]将一个或多个值value插入到列表key的表尾(右边)。LPOP key移除并返回列表key的头元素。RPOP key移除并返回列表key的尾元素。LRANGE key start stop获取列表key中指定范围内的元素,0表示第一个元素,-1表示最后一个元素,0 -1表示获取所有元素。LLEN key返回列表key的长度。LINDEX key index返回列表key中指定索引index上的元素,索引从0开始。LREM key count value移除列表中与value相等的元素,count大于0表示从表头开始向表尾移除,等于0表示移除所有等于value的元素,小于0表示从表尾开始向表头移除。

Redis常用命令有哪些?-图2
(图片来源网络,侵删)

集合(Set)类型是String类型的无序集合,集合中的元素是唯一的,不允许重复,常用于标签、共同好友等场景。SADD key member [member ...]向集合key中添加一个或多个成员member,如果成员已存在则忽略。SMEMBERS key返回集合key中的所有成员。SREM key member [member ...]移除集合key中一个或多个成员member。SCARD key返回集合key中成员的数量。SISMEMBER key member判断member是否是集合key的成员,是则返回1,否则返回0。SINTER key [key ...]返回所有给定集合的交集。SUNION key [key ...]返回所有给定集合的并集。SDIFF key [key ...]返回第一个集合与其他所有集合的差集。

有序集合(Sorted Set,ZSet)是Redis中特别重要的数据类型,它像Set一样也是String类型元素的集合,且不允许重复的成员,但每个成员都会关联一个double类型的分数(score),Redis正是通过分数来为集合中的成员进行从小到大的排序,常用于排行榜、优先级队列等。ZADD key [NX|XX] [CH] [INCR] score member [score member ...]向有序集合key中添加一个或多个成员,或者更新已存在成员的分数。ZRANGE key start stop [WITHSCORES]返回有序集合key中指定索引范围内的成员,按分数从低到高排序,WITHSCORES表示同时返回成员的分数。ZREVRANGE key start stop [WITHSCORES]ZRANGE相反,按分数从高到低排序。ZSCORE key member返回有序集合key中成员member的分数。ZINCRBY key increment member将有序集合key中成员member的分数加上increment。ZCARD key返回有序集合key中成员的数量。ZCOUNT key min max返回分数在min和max之间的成员数量。ZRANK key member返回成员member在有序集合key中的排名(按分数从低到高)。ZREMRANGEBYRANK key start stop移除有序集合key中指定排名范围内的成员。ZREMRANGEBYSCORE key min max移除有序集合key中指定分数范围内的成员。

除了针对特定数据类型的命令,Redis还提供了一些通用的命令,如INFO [section]用于获取Redis服务器的信息和统计,CONFIG GET parameterCONFIG SET parameter value用于获取和运行时配置Redis服务器,FLUSHDB删除当前数据库中的所有键,FLUSHALL删除所有数据库中的所有键(慎用)。

为了更直观地展示部分常用命令及其功能,以下是一个简单的表格示例:

Redis常用命令有哪些?-图3
(图片来源网络,侵删)
命令分类 命令 功能描述
键操作 EXISTS key 检查键是否存在
DEL key 删除键
EXPIRE key seconds 设置键的过期时间(秒)
字符串 SET key value 设置键的值
GET key 获取键的值
INCR key 将键的值加1
列表 LPUSH key value 将值插入到列表头部
LRANGE key start stop 获取列表指定范围内的元素
集合 SADD key member 向集合添加成员
SMEMBERS key 获取集合所有成员
有序集合 ZADD key score member 向有序集合添加成员及分数
ZRANGE key start stop [WITHSCORES] 获取有序集合指定范围内的成员及分数

掌握这些Redis命令是高效使用Redis的基础,在实际应用中,需要根据具体的业务场景选择合适的数据类型和命令组合,同时要注意命令的性能影响,例如避免使用KEYS命令,合理使用管道(Pipeline)和 Lua 脚本来减少网络开销和提高执行效率。

相关问答FAQs:

  1. 问:Redis中的KEYS命令和SCAN命令有什么区别?为什么在生产环境中推荐使用SCAN 答: KEYS pattern命令会一次性返回所有符合给定模式pattern的键,这个过程会阻塞Redis服务器,导致服务器无法处理其他客户端请求,尤其是在键数量非常庞大的情况下,可能会造成严重的性能问题甚至服务不可用,而SCAN cursor [MATCH pattern] [COUNT count]命令基于游标进行迭代式查找,每次只返回一部分匹配的键,不会阻塞服务器,客户端可以通过多次调用SCAN命令,直到游标为0时遍历完所有符合条件的键,在生产环境中,为了不影响Redis服务的稳定性和响应速度,推荐使用SCAN命令代替KEYS命令进行键的查找。

  2. 问:Redis的字符串类型(String)能存储的最大值是多少?除了简单的字符串存储,还有哪些常用场景? 答: Redis的字符串类型(String)可以存储的最大值是512MB,除了存储简单的文本、数字等基本数据外,字符串类型的常用场景还包括:1)计数器:利用INCRDECRINCRBY等原子操作实现计数功能,如文章阅读数、点赞数等;2)对象缓存:将序列化后的JSON对象、XML或其他格式的数据以字符串形式存储,实现对象缓存;3)分布式锁:使用SET命令的NX(不存在则设置)和EX(过期时间)选项,结合GETDEL命令(或Lua脚本)可以实现简单的分布式锁;4)二进制数据存储:可以存储图片、音频等文件的二进制数据(需注意大小限制)。

分享:
扫描分享到社交APP
上一篇
下一篇