Redis常用命令

客户端有自动提示功能,这里只列出关键词。

  • Redis 的命令不区分大小写,但是 Key 严格区分大小写

set

集合

SADD

SADD key member [member ...] 添加元素

SCARD

SCARD key 返回元素数量

SMEMBERS

SMEMBERS key 获取所有元素

SRANDMEMBER

SRANDMEMBER key [count] 随机获取一定数量的元素

SPOP

SPOP key [count] 从存储在 key 的集合中移除并返回一个或多个随机元素

sorted set

ZRANK

ZRANK key member 输入 value 取得 score 值

调试

PING // 如果返回 PONG,说明连接正确

ECHO // 回音,发出与返回文字内容一致,说明连接正确

客户端/服务器

INFO // 查看服务器的统计信息

QUIT // 客户端请求断开连接

SHUTDOWN // 执行以下数据库关闭动作:

  • 停止所有客户端
  • 如果有至少一个保存点在等待,执行 SAVE 命令
  • 如果 AOF 选项被打开,更新 AOF 文件
  • 关闭 redis 服务器(server)

  • Redis 的服务端可以直接启动,会自动切换到后台输出,可以通过用客户端命令shutdown来停止

数据库

KEYS // 查看有哪些匹配模式的 key 在数据库中

DEL // 删除多个 key 值及其对应的数据

DBSIZE // 返回当前数据库的 key 的数量

RENAME // 重命名一个 key,如果已存在则被覆盖

EXISTS // 查看某些 key 是否存在

MOVE // 将当前数据库的 key 移到另一个数据库

SCAN // SCAN 迭代 key、SSCAN 迭代集合中的元素、HSCAN 迭代哈希中的键值对、ZSCAN 迭代有序集合中的元素

SORT // 返回列表、集合、有序集合经过排序的元素

SELECT // 选择 DB 号,默认 16 个(0~15),默认选中 0 号

SWAPDB // 交换两个 DB 号对应的数据库

FLUSHDB // 删除当前选中的数据库内容

FLUSHALL // 删除所有数据库内容

事务

MULTI // 开启一个事务缓存

EXEC // 执行事务,结束本次事务

DISCARD // 丢弃 MULTI 命令后的操作,放弃本次事务处理

WATCH key [key…] // 监控某些 key,如果 EXEC 时这些 key 发生变化,则事务执行失败。watch 用于”乐观锁”

UNWATCH // 取消事务处理中监控的所有 key

Lua 脚本

EVAL // 执行 Lua 脚本

自动过期

EXPIRE // 设定一个 key 的生存时间

EXPIREAT // 设定一个过期时间,一个秒数的时间戳

TTL // 返回 key 的剩余生存时间

PERSIST // 设定 key 为永久 key,删除生存时间

发布与订阅

SUBSCRIBE channel… // 订阅 channel

UNSUBSCRIBE channel… // 停止监听频道

PSUBSCRIBE pattern… // 以模式匹配订阅 channel

  • 可用的模式有:
    • ? 匹配一个字符
    • * 匹配 0 到多个字符
    • [abc] 匹配指定字母范围中的一个

PUNSUBSCRIBE pattern… // 以模式匹配的方式取消频道订阅

PUBLISH message // 向 channel 中发布信息

  • PUBSUB ... args ... // 检测当前 PUB/SUB 系统状态
    • PUBSUB CHANNELS [pattern] 列出(符合模式的/所有)活跃(含有一个或多个订阅者,不包括模式订阅者)信道列表
    • PUBSUB NUMSUB [channel-1 ... channel-N] 列出信道订阅者数量
    • PUBSUB NUMPAT 返回以PSUBSCRIBE订阅的所有模式的数量总和

持久化

SAVE // 保存当前所有数据到 RDB 文件。生产环境很少执行 SAVE,因为它会阻塞所有客户端。

BGSAVE // Redis fork 出一个子进程进行备份然后退出。命令会立即返回,可以通过 LASTSAVE 判断之前是否执行成功。

LASTSAVE // 返回最近一次 Redis 成功将数据保存到磁盘的时间戳。

BGREWRITEAOF // 在没有其他持久化操作时,执行一个 AOF 文件重写操作。

复制

SLAVEOF // 开启或取消当前服务器与目标服务器的从属关系

ROLE // 返回当前实例在复制中担任的角色 master、slave、sentinel

慢查询日志

SLOWLOG GET [number] 查看慢查询日志,number 表示查询多少条 每一条显示的四个字段:唯一标识、起始时间戳、执行总时常(微秒)、执行的命令

SLOWLOG RESET 清空慢查询日志

SLOWLOG LEN 查看日志总条数

安全

CONFIG get requirepass // 查看系统密码设定状态

CONFIG set requirepass “xxxxxx” // 设定系统密码

AUTH password // 在有密码的情况下,客户端连接时要先输入密码后才能操作

命令操作配置选项

CONFIG GET maxclients // 获得最大连接数

CONFIG SET maxclients 10000 // 设置最大连接数

配置文件选项

port 6379 // 指定端口

save 900 1 // 指定多少秒、发生多少次变更后执行快照
save 300 10 save "" 不保存快照

#pidfile /var/run/redis.pid // 指定 PID 位置

dbfilename dump.rdb // 指定本地数据库文件名

appendonly no // 开启 AOF 持久化模式

appendfilename “appendonly.aof” // 设置 AOF 文件名

slaveof 192.168.1.1 6379 // 设置当前 Redis 为 Slave,同时设置 Master 的 IP 和端口

masterauth // 设置密码

slave-serve-stale-data yes // 当前主机作为 Slave 与 Master 断开后应该怎么做,yes 继续服务, no 返回错误

protected-mode yes // 保护模式,在没有设置 bind ip 或密码的情况下,不允许外部访问

daemonize yes // 以守护进程后台模式运行

# cluster-enabled yes // 启用集群

# cluster-config-file nodes-6379.conf // 集群配置文件,在集群第一次启动时会自动生成

slowlog-slower-than 10000 // 设置慢查询日志的阈值,单位微秒 slowlog-max-len 128 // 设置慢查询日志记录的最大条数

rename-command

对线上环境一些危险的命令要通过重命名方式屏蔽掉,避免客户端访问,如:

  • flushdb 清空数据库
  • flushall 清空所有记录
  • config 客户端连接后配置服务器
  • keys 客户端连接后查看所有存在的键,线上量大时会卡死整个 Redis

  • rename-command FLUSHALL "" 通过这种方式彻底屏蔽。客户端访问时会报:unknown command错误

  • rename-command FLUSHALL abcdefg 这种方式可以设置只有管理员知道的命令名