Skip to content
← 返回Redis列表
数据与原子性

Redis 操作与命令 ​

连接数据库与检查结构 ​

redis-cli · 连接 Redis 并执行命令;默认连接本机,远程连接应按服务要求启用 TLS ​

  • 交互式连接并提示输入密码,不在命令行暴露密码:
bash
redis-cli -h {{localhost}} -p {{6379}} --askpass
  • 用 TLS 和指定 CA 连接远程服务:
bash
redis-cli --tls --cacert {{ca.pem}} -h {{redis.example.com}} -p {{6380}} --askpass
  • 检查本机连接:
bash
redis-cli PING
  • 选择逻辑库查询键;Redis Cluster 仅支持库 0:
bash
redis-cli -n {{0}} GET {{app:status}}

查询与读取数据 ​

Redis hashes · 用哈希保存字段;写入会覆盖同名字段,示例连接本机 ​

用哈希保存字段;写入会覆盖同名字段,示例连接本机。

  • 写入多个字段,会更新已有字段:
bash
redis-cli HSET {{user:42}} name {{Alice}} active {{1}}
  • 读取单个字段:
bash
redis-cli HGET {{user:42}} name
  • 读取所有字段;大哈希应避免一次全量读取:
bash
redis-cli HGETALL {{user:42}}
  • 删除指定字段,此操作会修改数据:
bash
redis-cli HDEL {{user:42}} {{obsolete_field}}

Redis lists · 处理有序列表;弹出操作会移除元素,示例连接本机 ​

  • 向列表头部写入一个任务:
bash
redis-cli LPUSH {{queue:jobs}} {{job-42}}
  • 查看前 10 项,不移除元素:
bash
redis-cli LRANGE {{queue:jobs}} 0 9
  • 查看长度:
bash
redis-cli LLEN {{queue:jobs}}
  • 从尾部取走一个任务;配合 LPUSH 实现先进先出:
bash
redis-cli RPOP {{queue:jobs}}

Redis sets · 管理不重复的集合成员;示例连接本机,新增和删除会修改数据 ​

  • 添加成员,已有成员不会重复:
bash
redis-cli SADD {{project:tags}} {{backend}} {{api}}
  • 检查成员是否存在:
bash
redis-cli SISMEMBER {{project:tags}} {{api}}
  • 读取全部成员;仅用于大小可控的集合:
bash
redis-cli SMEMBERS {{project:tags}}
  • 删除指定成员:
bash
redis-cli SREM {{project:tags}} {{obsolete}}

Redis sorted sets · 按分数维护有序集合;示例连接本机,成员唯一且分数可更新 ​

  • 写入成员分数;已有成员会更新分数:
bash
redis-cli ZADD {{leaderboard}} {{100}} {{player-42}}
  • 按分数从低到高查看前 10 个成员及分数:
bash
redis-cli ZRANGE {{leaderboard}} 0 9 WITHSCORES
  • 查看单个成员分数:
bash
redis-cli ZSCORE {{leaderboard}} {{player-42}}
  • 移除成员及其分数:
bash
redis-cli ZREM {{leaderboard}} {{player-42}}

Redis strings · 读取和写入字符串;示例默认连接本机 Redis,SET 会替换已有值 ​

  • 写入带过期时间的值,会替换已有内容:
bash
redis-cli SET {{app:status}} {{ready}} EX {{60}}
  • 只在键不存在时写入,避免覆盖:
bash
redis-cli SET {{app:lock}} {{unique-token}} NX EX {{30}}
  • 读取值:
bash
redis-cli GET {{app:status}}
  • 原子增加整数计数;不存在时从 0 开始:
bash
redis-cli INCR {{app:visits}}

分析计划、过期时间与运行状态 ​

Redis INFO · 查看 Redis 服务器状态与运行指标 ​

  • 查看服务器版本及运行时间:
bash
redis-cli INFO server
  • 查看内存使用和分配指标:
bash
redis-cli INFO memory
  • 查看命中率相关计数和处理统计:
bash
redis-cli INFO stats
  • 查看各逻辑库键数与过期键统计:
bash
redis-cli INFO keyspace

Redis SCAN · 增量遍历键;COUNT 只是提示,结果可能重复且不是一致性快照 ​

  • 从游标 0 开始扫描匹配前缀的键:
bash
redis-cli SCAN 0 MATCH "{{app:*}}" COUNT {{100}}
  • 把上次返回的游标传入,直到返回游标 0;空批次不代表结束:
bash
redis-cli SCAN {{returned_cursor}} MATCH "{{app:*}}" COUNT {{100}}
  • 使用客户端自动遍历游标;大库仍应控制扫描频率:
bash
redis-cli --scan --pattern "{{app:*}}"

Redis TTL · 检查和调整过期时间;过期会删除键,命令默认连接本机 ​

  • 查看剩余秒数;-1 表示无过期时间,-2 表示键不存在:
bash
redis-cli TTL {{session:42}}
  • 查看剩余毫秒数:
bash
redis-cli PTTL {{session:42}}
  • 将过期时间设置为 5 分钟,会改变已有过期策略:
bash
redis-cli EXPIRE {{session:42}} 300
  • 取消过期,键将持续保留并可能增加内存占用:
bash
redis-cli PERSIST {{session:42}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读