Redis 客户端命令参考

Redis 命令可以直接在 Redis 命令行中执行,用于管理员维护服务器或开发人员维护数据。Redis 命令很庞杂,本文把它们按用途分类并进行了关键说明,便于对比记忆,也便于管理人员和开发人员有选择地查阅,也便于开发人员掌握第三方 Redis 开发包提供的接口。

作者:王克锋
出处:https://kefeng.wang/2017/08/16/redis-command/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1 命令概述

参考资料: Redis 命令清单(英文)Redis 命令(中文)
启动客户端: redis-cli -a passwd
下面所有命令不区分大小写。

2 连接(Connection)

  • AUTH password: 向服务器认证。如果服务器设置了密码,客户端连接后必须认证才能继续(除非 redis-cli 中指定了密码);
  • PING: 测试与服务器连接是否正常,正常时输出 PONG;
  • ECHO message: 原样回显信息,测试用;
  • SELECT dbIdx: 切换至指定的数据库(默认为 0~15);
  • SWAPDB index1 index2: 交换两个数据库的所有存储数据;
  • QUIT: 从服务器断开连接。

3 操作数据

3.1 Key(键)

常规命令:

  • KEYS pattern: 列出所有匹配键名;
  • EXISTS key: 检查指定的 KEY 是否存在,返回0/1;
  • TYPE key: 查询指定 KEY 的数据类型(none/string/list/set/zset/hash);
  • RENAME key newkey: KEY 不存在,或者 KEY==newKEY时,报错;newKEY存在时,会被覆盖;
  • SORT key [ASC | DESC]: 对 List/Set/ZSet 中的元素排序;
  • DEL key [key ...]: 删除指定的 KEY(可多个);

有效期相关命令:

  • TTL key: 查询指定 KEY 的剩余时间,单位是秒(KEY 为永久时返回 -1,KEY 不存在时返回 -2);
  • EXPIRE key seconds: 设置 KEY 有效期(剩余的时长),到期后自动删除,单位是“秒”;
  • EXPIREAT key seconds: 与命令 EXPIRE 相似,但指定的是超时时的时间点(Unix时间戳);
  • PERSIST key: 删除过期时间,把该 KEY 由易失变为持久;

维护相关命令:

  • DUMP key: 序列化指定的 KEY,返回序列化之后的内容;
  • RESTORE key ttl serialized-value [REPLACE]: 序列化后的内容,反序列化赋给 KEY;
  • MOVE key db: 同一个 Redis 实例中的两个数据库间,转移指定的 KEY;
  • MIGRATE host port key db2 timeout [COPY] [REPLACE]: 不同 Redis 实例间转移指定的 KEY;

3.2 String(字符串)

  • GET key / MGET key1 key2 ...: 获取单个或多个键的值;
  • MSET key value [key value ...]: 设置键值对,一对或多对,TTL 会被重置;
  • APPEND key value: 向指定 KEY 值末尾追加内容;
  • STRLEN key: 查询字符串长度;
  • GETRANGE key start end: 获取字符串子串(可指定负值,表示从尾部偏移);
  • DECR key / DECRBY key decrement: 存储值减少1或减少指定值;
  • INCR key / INCRBY key increment: 存储值增加1或增加指定值;

SET key value [EX seconds] [PX milliseconds] [NX|XX],设置键值,会覆盖 value 并重置 TTL:

  • EX second: 设置过期时间为 second 秒(等同于命令 SETEX);
  • PX millisecond: 设置过期时间为 millisecond 毫秒(等同于命令 PSETEX);
  • NX: 只有键不存在时,才对修改值(等同于命令 SETNX);
  • XX: 只在键已经存在时,才对键进行设置操作。

3.3 Hash(哈希表)

相当于 Java 中的 Map<String,String>
下面命令都是针对哈希表(名字是 key)操作:

  • HEXISTS key subKey: 查询是否存在指定的域;
  • HDEL key subKey1 subKey2 ...: 删除指定的域(subKey);
  • HLEN key: 查询域的个数;

  • HKEYS key: 查询所有域的名称(不包括值);

  • HGET key subKey: 查询指定域的值;
  • HMGET key subKey1 subKey2 ...: 查询指定域的值;
  • HGETALL key: 查询所有域及其值;

  • HSET key subKey value: 对指定域设置新值;

  • HMSET key subKey value [subKey value ...]: 对指定多个域设置新值;
  • HSTRLEN key subKey: 查询指定域值的长度;
  • HINCRBY key subKey increment: 对指定域作增量操作;

3.4 List(列表)

相当于 Java 中的 List<String>

  • LPUSH|RPUSH key value [value ...]: 向表头(逐个向0位置插入,结果倒序)或表尾(逐个向尾部插入,结果为正序)插入多个值;
  • LPOP|RPOP key: 从表头或表尾弹出单个值;
  • LSET key index value: 对指定下标设置新值;
  • LLEN key: 查询列表长度;
  • LINSERT key BEFORE|AFTER pivot value: 在参照值 pivot 的前面或后面插入新值;
  • LINDEX key index: 查询指定下标的元素;
  • LRANGE key start stop: 返回指定下标范围[start,stop]内的元素;
  • LTRIM key start stop: 只保留下标范围[start,stop]的元素,其他的全部移除;
  • LREM key count value: 从列表移除 count(零为全部/正数从头/负数从尾) 个值为 value 的元素;

3.5 Set(集合)

下面命令中,key 表示集合的名称,member表示集合中成员的值。

  • SCARD key: 查询集合中的元素个数;
  • SADD key member [member ...]: 批量添加元素(已存在的被忽略);
  • SREM key member [member ...]: 从集合中删除指定元素;
  • SPOP key: 随机移出并返回一个元素;
  • SRANDMEMBER key [count]: 随机返回指定个数(默认为1)的元素,但不移出;
  • SMOVE key1 key2 member: 将集合 key1 中的元素 member 移至集合 key2;
  • SISMEMBER key member: 判断某元素是否属于某个集合;
  • SMEMBERS key: 返回集合中所有元素;
  • SDIFF|SINTER|SUNION key [key ...]: 生成指定集合的差集|交集|并集,返回新集合所有元素;
  • SDIFFSTORE|SINTERSTORE|SUNIONSTORE dest key [key ...]: 生成指定集合的差集|交集|并集,新集合所有元素存入集合 dest;

3.6 ZSet(SortedSet, 有序集合)

下列命令中,key 为集合名称,各成员 member 都有 score 属性,各成员存储下标用 index 表示;
member 的值在集合中不会重复,重复写入时会更新同成员的 score(index 也可能变化);
score 是各个成员的排序依据(score 相同时,按 member 字典顺序排序),查询结果以升序排列,score1/score2 数值前加符号 “[“(可默认不加)表示闭区间,加 “(” 时表示开区间,还可以用 -inf 和 +inf 表示负无穷和正无穷;
index 是各成员的下标,从 0 开始,也可以用 -1/-2/… 表示倒数第 1/2/… 个成员;

  • ZADD key score member [score member] ...: 批量添加元素;
  • ZCARD key: 统计集合中元素个数;
  • ZCOUNT key score1 score2: 统计 score 在 [score1,score2] 区间上的元素个数;
  • ZRANGE key index1 index2 [WITHSCORES]: 根据下标区间 [index1,index2] 返回元素(升序排列),WITHSCORES 表示连同 score 一并返回;
  • ZRANGEBYSCORE key score1 score2 [WITHSCORES] [LIMIT offset count]: 根据 score 区间 [score1,score2] 返回元素(升序排列),可指定是否连同返回 score、偏移和个数;
  • ZRANGEBYLEX key member1 member2 [LIMIT offset count]: 根据 member 区间(可指定开闭区别,正负无穷)返回元素,可指定偏移和个数;
  • ZREVRANGE key index1 index2 [WITHSCORES]: 与命令 ZRANGE 功能相同,只是结果降序排列;
  • ZREVRANGEBYSCORE key score1 score2 [WITHSCORES] [LIMIT offset count]: 与命令 ZRANGEBYSCORE 功能相同,只是结果为降序排列;
  • ZREM key member [member ...]: 批量删除元素;
  • ZREMRANGEBYRANK key index1 index2: 根据下标区间 [index1,index2] 删除元素;
  • ZREMRANGEBYSCORE key score1 score2: 根据 score 区间 [score1,score2] 删除元素;
  • ZREMRANGEBYLEX key score1 score2: 根据 member 区间(可指定开闭区间、正负无穷)删除元素;
  • ZLEXCOUNT key member1 member2: 统计 member 区间(可指定开闭区间、正负无穷)元素个数;
  • ZRANK key member: 查询成员 member 的下标 index;
  • ZREVRANK key member: 成员按 score 倒序排列的情况下,返回 member 的下标 index;
  • ZINCRBY key increment member: 使成员 member 的 score 增加 increment(负数则减小);
  • ZSCORE key member: 返回成员 member 的 score;
  • ZUNIONSTORE destination numkeys key ... [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX]: 把多个集合(参数 key)的并集,存入集合 destination,可指定最终成员的score算法为各源score的SUM(默认)/MIN/MAX,WEIGHTS选项表示各源集合中元素的score在被引用前乘以相应权重;
  • ZINTERSTORE destination numkeys key ... [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX]: 把多个集合(参数 key)的并集,存入集合 destination,参数含义与 ZUNIONSTORE 命令相同。

3.7 GEO(地理位置)

此处坐标标准为 WGS84(World Geodetic System 1984),也就是 GPS(全球定位系统) 坐标系。
GEO 使用有序集合(zset)保存“geohash + 经纬度坐标”的集合。
以下各命令中,key 为坐标点集合的名称,一个集合包含多个坐标点;
每个坐标点有 longitude(经度)/latitude(纬度)/member(坐标点的名称) 三个属性。

  • GEOADD key longitude latitude member [longitude latitude member ...]: 批量添加坐标点;
  • GEOPOS key member [member ...]: 批量获取点的坐标;
  • GEODIST key member1 member2 [m|km|ft|mi]: 获取两点间距离,单位可以是 m(米为默认)/km(千米)/ft(英尺)/mi(英里)
  • GEORADIUS key longitude latitude radius [m|km|ft|mi] [ASC|DESC] [COUNT count]: 获取某圆心点(经纬度坐标)某距离内的所有坐标点,可指定选项 WITHCOORD|WITHDIST|WITHHASH 表示返回结果带上经纬度|距离|hashASC|DESC表示返回结果按照距离升序|降序排序,COUNT count表示返回结果的最大个数;
  • GEORADIUSBYMEMBER key member radius [m|km|ft|mi] [ASC|DESC] [COUNT count]: 获取某圆心点(坐标点名称)某距离内的所有坐标点,其他参数与 GEODIST 相同;
  • GEOHASH key member [member ...]: 获取坐标点的 HASH 值(将经纬度转换成字符串 HASH 值)

3.8 通用操作

3.8.1 不存在时设置(SETNX)

SETNX 的含义为 SET if Not eXists。
不存在时才设置(当作成功,返回1),存在时不作任何操作(当作失败,返回0)。

  • SETNX key value: 对应于普通 key 单对;
  • MSETNX key value [key value ...]: 对应于普通 key 多对,所有 key 都不存在时才去设置并返回1,只要一个 key 存在就不作任何操作,并返回0;
  • HSETNX key field value: 对应于哈希表 key;
3.8.2 游标遍历(SCAN)

SCAN/HSCAN/SSCAN/ZSCAN 用于增量地迭代集合中的元素,每次执行都只会返回一小批元素,不像 KEYS/SMEMBERS 返回所有元素。
其操作步骤为:首次迭代指定 cursor=0 表示从头开始,每次迭代都会返回新 cursor 作为下次迭代的起始 cursor,直至返回 cursor=0 表示结束。
MATCH表示只匹配的指定模式的元素,COUNT表示返回元素个数的上限。
如果两次迭代间的空档时间里,集合被修改,那么返回的元素会有偏差。

  • SCAN cursor [MATCH pattern] [COUNT count]: 对应于当前库中的所有键(包括所有数据类型)
  • HSCAN key cursor [MATCH pattern] [COUNT count]: 对应于 Hash
  • SSCAN key cursor [MATCH pattern] [COUNT count]: 对应于 Set
  • ZSCAN key cursor [MATCH pattern] [COUNT count]: 对应于 ZSet

4 操作服务器(Server)

4.1 服务器配置

  • CONFIG GET pattern: 查询匹配的参数配置;
  • CONFIG SET name value: 设置特定的参数,无需重启立即生效;
  • CONFIG REWRITE: 把最新配置(含 CONFIG SET 修改的)保存至服务启动时引用的配置文件中。
  • CONFIG RESETSTAT: 重置INFO命令涉及的统计信息;

4.2 客户端信息

  • CLIENT SETNAME connection-name: 设定本连接名字(初始连接名为空),显示于CLIENT LIST
  • CLIENT GETNAME: 获取当前连接的名字。
  • CLIENT LIST: 所有连接的客户端的信息;
  • CLIENT KILL ip:port: 关闭地址为 ip:port 的客户端;

4.3 服务器信息

  • TIME: 查询当前服务器时间,返回 Unix 时间戳(秒和微秒两个值);
  • MONITOR: 实时打印出 Redis 服务器接收到的命令(调试用);
  • INFO [default]: 返回默认选择的信息,”default” 可缺省
  • INFO ALL: 返回所有信息
  • INFO CPU: CPU 的计算量统计信息
  • INFO Clients: 已连接客户端的信息
  • INFO Cluster: 集群有关的信息
  • INFO Commandstats: 各种不同类型的命令的执行统计信息
  • INFO Keyspace: 数据库相关的统计信息
  • INFO Memory: 服务器的内存信息
  • INFO Persistence: RDB/AOF 持久化的信息
  • INFO Replication: 主从复制信息
  • INFO Server: 服务器的信息
  • INFO Stats: 一般统计信息

4.4 主从同步

  • SLAVEOF host port: 将当前服务器转变为指定服务器的从属服务器;
  • SYNC: 用于复制功能(replication)的内部命令。
  • PSYNC <MASTER_RUN_ID> <OFFSET>: 用于复制功能(replication)的内部命令。

4.5 数据备份

  • SHUTDOWN [SAVE|NOSAVE]: 停止客户端,可选保存(SAVE|NOSAVE)RDB/AOF 文件,停止服务器;
  • SAVE: 同步保存数据至磁盘 RDB 文件,注意不要用在生产环境操作,它会阻塞所有客户端;
  • BGSAVE: 后台异步保存数据至磁盘文件;
  • BGREWRITEAOF: 后台重写 AOF 文件;
  • LASTSAVE: 查看最近一次成功保存磁盘文件的时间(Unix时间戳);

4.6 数据重置

  • FLUSHDB: 清空当前数据库;
  • FLUSHALL: 清空当前 Redis 实例的所有数据库;
  • DBSIZE: 查询当前数据库的 KEY 的数量;

4.7 慢日志

  • SLOWLOG LEN: 查询当前记录的慢操作条数;
  • SLOWLOG GET [count]: 查看慢操作详情,每个详情包括执行时间点、耗时、命令及其参数;
  • SLOWLOG RESET: 清空当前记录的慢操作。

5 高级用法

5.1 事务(Transaction)

  • WATCH key [key ...]: 监视多个key,若事务结束(EXEC/DISCARD)前key被修改,则事务中断;
  • UNWATCH: 取消 WATCH 命令对所有 key 的监视
  • MULTI: 事务块的开始
  • EXEC: 原子性地执行事务块内的所有命令,会自动执行 UNWATCH 命令;
  • DISCARD: 放弃事务块内的所有命令,会自动执行 UNWATCH 命令;

5.2 发布/订阅

  • PUBLISH channel message: 向指定频道发送消息;
  • SUBSCRIBE channel [channel ...]: 订阅给定的多个频道的信息
  • UNSUBSCRIBE [channel [channel ...]]: 退订指定的频道(不指定表示退订所有已订阅的频道)
  • PSUBSCRIBE pattern [pattern ...]: 与命令SUBSCRIBE类似,只是以通配符模式指定频道
  • PUNSUBSCRIBE [pattern [pattern ...]]: 与命令UNSUBSCRIBE类似,只是以通配符模式指定频道
  • PUBSUB CHANNELS [pattern]: 列出当前的活跃频道(至少有一个订阅者的)
  • PUBSUB NUMSUB [channel ...]: 返回指定频道的订阅者数量
  • PUBSUB NUMPAT: 返回订阅模式的数量
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值