客户端有自动提示功能,这里只列出关键词。
- 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
这种方式可以设置只有管理员知道的命令名