redis-cli 命令详解

  1. auth —> 密码认证
  2. quit —> 退出,关闭连接
  3. ping —> 返回 pong
  4. echo —> 打印字符串
  5. select —> 切换指定数据库,以索引号表示
  1. client list —> 获取连接到服务器的客户端连接列表
  2. client kill —> 关闭客户端连接
  3. save —> 同步保存数据到磁盘
  4. bgsave —> 在后台异步保存当前数据库的数据到磁盘
  5. time —> 返回当前服务器时间
  6. info —> 获取 Redis 服务器的各种信息和统计数值,
  7. Server —> 服务器信息
  8. Clients —> 连接客户端信息
  9. Memory —> 内存信息
  10. Persistence —> RDB 和 AOF 的相关信息
  11. Stats —> 一般统计信息
  12. Replication —> 主/从复制信息
  13. CPU —> CPU 计算量统计信息
  14. Cluster —> 集群信息
  15. Keyspace —> 数据库相关的统计信息
  1. exists —> 确认key是否存在
  2. del —> 删除key
  3. type —> 查看key对应值类型
  4. keys —> 查询满足条件的所有keys
  5. randomkey —> 随机返回一个key
  6. rename —> 重命名key,若新key存在则删除原来存在的key
  7. dbsize —> 返回key的总数
  8. expire —> 设置key有效时间,单位秒;设置小于等于 0 则表示删除key
  9. ttl —> 返回key剩余有效时间,永久有效返回 -1,不存在key返回 -2
  10. move —> 将指定的key移动到索引号表示的数据库
  11. flushdb —> 删除当前数据库所有的 key
  12. flushall —> 删除所有数据库的所有 key

String 类型

  1. set —> 设置 key/value 值对,值为 string
  2. get —> 返回 key 对应的 string 值
  3. mget —> 返回多个 key 的值
  4. mset —> 同时设置多个 key/value
  5. incr —> 给 key 的 value 增加 1 ,只当 value 是 integer 时以及不超过最大值(2^31-1)时有效
  6. decr —> 给 key 的 value 减少 1
  7. append —> 在字符串 value 后面连接新的 value
  8. substr —> 返回截取的字符串,substr key start end

List 类型

  1. rpush —> 向名称为 key 的列表尾部添加一个 string 元素
  2. lpush —> 向名称为 key 的列表头部添加一个元素
  3. llen —> 返回列表长度
  4. lrange —> 返回名称为 key 的列表从 start 到 end 之间的元素
  5. ltrim —> 截取列表元素,保留 start 到 end 之间的元素
  6. lindex —> 返回 index 处的元素
  7. lset —> 给 index 处的元素赋值为 value
  8. lrem —> lrem key count value 删除count个值为value的元素,count为0表示删除所有值为value的元素,count>0表示从头至尾删除count个值为value的元素,count<0表示从尾到头删除 |count| 个值为value的元素
  9. lpop —> 返回并删除列表中的第一个元素
  10. rpop —> 返回并删除列表中的最后一个元素

Set 类型

  1. sadd —> 向名称为 key 的 set 中添加元素
  2. srem —> 删除名称为 key 的 set 中的元素
  3. spop —> 随机删除并返回名称为 key 的 set 中的一个元素
  4. smove —> 从名称为 srckey 的集合中的一个名称为 member 元素移动到名称为 dstkey 的集合
  5. scard —> 返回名称为 key 的集合的元素数量
  6. sismember —> 返回 member 是否是 key 集合中的元素
  7. sinter —> 求集合交集
  8. sinterstore —> 求集合交集并保存到 dstkey 的集合
  9. sunion —> 求集合并集
  10. sunionstore —> 求集合并集并保存到 dstkey 的集合
  11. sdiff —> 求集合差集,第一个集合中不存在后面集合中的元素,集合 a : {a,b,c} , 集合 b : {a} , 集合 c : { c } ,则sdiff a b c = { b }
  12. sdiffstore —> 求差集并保存到 dstkey 的集合
  13. smembers —> 列出集合中的元素
  14. srandmember —> 随机返回集合中的一个元素

ZSet 类型

  1. zadd —> 向名称为 key 的有序集合中添加元素 member,score用于排序,如果该元素已经存在,则更新该元素的 score
  2. zrem —> 删除名称为 key 的 zset 中的元素 member
  3. zincrby —> 如果在名称为 key 的 zset 中已经存在元素 member,则该元素的 score 增加 increment;否则向集合中添加该元素,其 score 的值为 increment
  4. zrank —> 返回名称为 key 的 zset(元素已按 score 从小到大排序)中 member 元素的 rank(即index,从0开始)
  5. zrevrank —> 返回名称为 key 的 zset(元素已按 score 从大到小排序)中 member 元素的 rank(即index,从0开始)
  6. zrange —> 返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素
  7. zrevrange —> 返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素
  8. zrangebyscore —> 返回名称为key的zset中score >= min且score <= max的所有元素
  9. zcard —> 返回名称为key的zset的基数
  10. zscore —> 返回名称为key的zset中元素的score
  11. zremrangebyrank —> 删除名称为key的zset中rank >= min且rank <= max的所有元素
  12. zremrangebyscore —> 删除名称为key的zset中score >= min且score <= max的所有元素
  13. zunionstore
  14. zinterstore

Hash 类型

  1. hset —> 将哈希表 key 中的字段 field 的值设为 value
  2. hget —> 返回哈希表 key 中的字段 field 的值
  3. hlen —> 返回哈希表 key 中字段数量
  4. hkeys —> 返回哈希表 key 中所有字段
  5. hexists —> 返回哈希表 key 中字段 field 是否存在
  6. hdel —> 删除哈希表 key 中字段 field
  7. hgetall —> 获取在哈希表中指定 key 的所有字段和值
  8. hincrby —> 为哈希表 key 中的指定字段的整数值加上增量 increment
  9. hincrbyfloat —> 为哈希表 key 中的指定字段的浮点数值加上增量 increment
  10. hmget —> 获取所有给定字段的值
  11. hmset —> 同时将多个 field-value (域-值)对设置到哈希表 key 中
  12. hsetnx —> 只有在字段 field 不存在时,设置哈希表字段的值
  13. hvals —> 获取哈希表中所有值
  14. hscan —> 迭代哈希表中的键值对

增删查改命令

Redis支持多种数据类型,每种类型都有其特定的应用场景和操作命令。核心数据类型及其增删查改命令:

数据类型 数据结构 典型场景 增加/修改 删除 查询 修改(特定)
String(字符串) 二进制安全的字符串,可存文本、数字等 缓存、计数器、分布式锁 SET key value
MSET key1 v1 key2 v2
SETNX key value
INCR key
DEL key GET key
MGET key1 key2
STRLEN key
APPEND key value
INCRBY key increment
Hash(哈希) 字段-值对的集合,适合存储对象 存储用户信息、商品详情等对象 HSET key field value
HMSET key f1 v1 f2 v2
HDEL key field HGET key field
HGETALL key
HKEYS key
HINCRBY key field increment
List(列表) 双向链表,元素有序且可重复 消息队列、朋友圈时间线 LPUSH key value
RPUSH key value
LINSERT key BEFORE/AFTER pivot value
LPOP key
RPOP key
LREM key count value
LRANGE key start stop
LINDEX key index
LSET key index value
Set(集合) 无序集合,元素唯一 标签、共同好友 SADD key member SREM key member SMEMBERS key
SISMEMBER key member
SINTER key1 key2
无原生修改命令,需先删后增
Sorted Set(有序集合) 元素按分数排序的集合,元素唯一 排行榜、延迟队列 ZADD key score member ZREM key member ZRANGE key start stop [WITHSCORES]
ZREVRANGE
ZRANK key member
ZADD key new_score member(通过重新添加实现覆盖)

💡 进阶数据类型与使用建议

除了上述五种基本类型,Redis还提供了一些用于特定场景的高级类型:

  • Bitmap(位图):基于String的位操作,非常适合二值状态统计(即只有两种状态(是/否、存在/不存在、真/假)​ 的数据统计场景),如用户签到。常用命令有 SETBITGETBITBITCOUNT
  • HyperLogLog:用于大数据量下的去重计数,有约0.81%的误差率,但非常节省内存,如统计网站UV。常用命令有 PFADDPFCOUNT
  • GEO(地理空间):可以存储地理坐标并进行距离计算、范围查询等,用于附近的人或商家等功能。常用命令有 GEOADDGEORADIUS
  • Stream:提供了完整的消息队列功能,支持消费者组,用于异步任务处理、消息流等。常用命令有 XADDXREAD

⚠️ 重要注意事项

在使用Redis命令时,有几个关键点需要留意:

  • 命令特性:Redis命令不区分大小写,但key是区分大小写的。所有数据都是以字符串形式保存的。
  • 生产环境建议
    • 避免使用 KEYS * 命令查询键,因为它会阻塞服务器,尤其在数据量大时。可以使用 SCAN 命令进行渐进式遍历。
    • 使用 HGETALL 获取一个包含大量字段的Hash时,可能会消耗较多资源。如果只需要部分字段,建议使用 HMGET;如果需要遍历所有字段,可以使用 HSCAN
  • 类型选型:根据你的业务场景选择最合适的数据类型。例如,存储对象用Hash,需要排序用Sorted Set,只需要去重则用Set。