Redis:命令行基础语法与实战

目录


一、连接Redis服务器

在开始操作Redis之前,首先需要建立与服务器的连接。Redis官方提供了redis-cli命令行工具,这是与Redis交互最直接的方式。

基础连接命令

bash 复制代码
ps -ef | grep redis 
redis-cli -h <host> -p <port> -a <password>

参数详解

  • ps -ef | grep redis:查看Redis服务器开启情况
  • -h:指定Redis服务器的主机名或IP地址。
  • -p:指定Redis服务器的端口号,默认为6379。
  • -a:指定连接密码(如果服务器设置了requirepass)。

常用连接示例

  • 连接本地默认Redis服务
bash 复制代码
redis-cli
  • 连接远程服务器
bash 复制代码
redis-cli -h 192.168.1.100 -p 6379 -a mypassword
  • 连接并指定数据库
bash 复制代码
redis-cli -n 1  # 连接到数据库1

连接验证

连接成功后,可以使用PING命令测试连接状态:

bash 复制代码
127.0.0.1:6379> PING
PONG

二、核心数据类型操作

Redis支持五种核心数据结构,每种结构都有其特定的操作命令。

可以使用help [operation]进行查找

1.字符串(String)操作

字符串是Redis最基本的数据类型,可以存储文本、数字或二进制数据。

常用命令

bash 复制代码
# 设置键值对
SET username "zhangsan"

# 获取值
GET username

# 设置带过期时间的值(秒)
SET session_token "abc123" EX 3600

# 这里代表abc123只存在一个小时,涉及到TTL时间;
# 默认set后TTL=-1,代表永久存在;TTL随时间减少,减少为0时修改为TTL=-2,代表销毁
# 可用TTL [key_name]查看剩余时间

# 原子递增
SET counter 0
INCR counter  # 返回1
INCR counter  # 返回2

# 批量操作
MSET key1 "value1" key2 "value2"
MGET key1 key2

2.哈希(Hash)操作

哈希适合存储对象,将多个字段-值对存储在一个键下。

常用命令

bash 复制代码
# 设置哈希字段
HSET user:1001 name "Alice" age 30

# 获取单个字段
HGET user:1001 name

# 获取所有字段
HGETALL user:1001

# 字段递增
HINCRBY user:1001 age 1

# 检查字段是否存在
HEXISTS user:1001 name

3.列表(List)操作

列表是有序的字符串集合,支持从两端进行插入和弹出操作。

常用命令

bash 复制代码
# 左侧插入
LPUSH mylist "value1" "value2"

# 右侧插入
RPUSH mylist "value3"

# 获取列表范围
LRANGE mylist 0 -1  # 获取所有元素

# 左侧弹出
LPOP mylist

# 右侧弹出
RPOP mylist

# 获取列表长度
LLEN mylist

4.集合(Set)操作

集合是无序且不重复的字符串集合。

常用命令

bash 复制代码
# 添加元素
SADD myset "member1" "member2"

# 获取所有元素
SMEMBERS myset

# 检查元素是否存在
SISMEMBER myset "member1"

# 集合运算
SADD set1 "a" "b"
SADD set2 "b" "c"
SINTER set1 set2  # 交集: "b"
SUNION set1 set2  # 并集: "a", "b", "c"

5.有序集合(ZSet)操作

有序集合为每个成员关联一个分数,按分数排序。

常用命令

bash 复制代码
# 添加成员及分数
ZADD leaderboard 100 "player1" 200 "player2"

# 获取排名范围
ZRANGE leaderboard 0 -1 WITHSCORES

# 按分数范围查询
ZRANGEBYSCORE leaderboard 50 150

# 增加分数
ZINCRBY leaderboard 50 "player1"

# 获取成员排名
ZREVRANK leaderboard "player1"

三、键管理命令

键管理是Redis操作的基础,涉及键的查询、删除、过期等操作。

常用键管理命令

bash 复制代码
# 检查键是否存在
EXISTS username

# 删除键
DEL username

# 获取键类型
TYPE username

# 设置过期时间(秒)
EXPIRE session_token 3600

# 获取剩余生存时间
TTL session_token

# 移除过期时间
PERSIST session_token

# 重命名键
RENAME oldkey newkey

# 扫描键(非阻塞)
SCAN 0 MATCH user:* COUNT 10

# 查看当前数据库键数量
DBSIZE

# 查看所有键(生产环境慎用)
KEYS *

四、事务/脚本

Redis支持事务和Lua脚本,用于实现原子性操作。

事务操作

bash 复制代码
# 开启事务
MULTI

# 命令入队
SET key1 "value1"
SET key2 "value2"

# 执行事务
EXEC

# 取消事务
DISCARD

# 监视键(乐观锁)
WATCH key1
MULTI
SET key1 "new_value"
EXEC

Lua脚本

bash 复制代码
# 直接执行脚本
EVAL "return redis.call('GET', KEYS[1])" 1 mykey

# 从文件执行
redis-cli --eval script.lua mykey , arg1

# 加载脚本并返回SHA
SCRIPT LOAD "return 1"

# 通过SHA执行
EVALSHA <sha1> 1 mykey

五、服务器管理与监控

Redis提供了丰富的命令用于服务器管理和性能监控。

服务器信息

bash 复制代码
# 查看服务器状态
INFO

# 查看特定部分信息
INFO memory
INFO clients

# 获取配置参数
CONFIG GET maxmemory
CONFIG GET databases

# 查看客户端连接
CLIENT LIST

# 杀死指定客户端
CLIENT KILL 127.0.0.1:12345

性能监控

bash 复制代码
# 实时监控命令
MONITOR

# 查看慢查询日志
SLOWLOG GET 10

# 统计信息
redis-cli --stat

# 延迟测试
redis-cli --latency -h 127.0.0.1

# 查找大键
redis-cli --bigkeys

持久化操作

bash 复制代码
# 同步保存RDB
SAVE

# 异步保存RDB
BGSAVE

# 重写AOF
BGREWRITEAOF

# 查看最后保存时间
LASTSAVE

六、高级功能

管道(Pipeline)

管道可以减少网络往返时间,提高批量操作效率。

bash 复制代码
# 使用管道批量导入
cat data.txt | redis-cli --pipe

发布订阅

bash 复制代码
# 订阅频道
SUBSCRIBE channel1

# 发布消息
PUBLISH channel1 "Hello World"

集群管理

bash 复制代码
# 查看集群信息
CLUSTER INFO
CLUSTER NODES

# 进入集群模式
redis-cli -c -h 127.0.0.1 -p 7000

七、实践与注意事项

键命名规范

  • 使用冒号分隔的命名空间:user:1001:profile
  • 避免特殊字符,使用小写字母和下划线
  • 控制键长度,建议不超过44字节

性能优化建议

  • 避免使用KEYS *命令,改用SCAN
  • 谨慎使用MONITOR,生产环境会影响性能
  • 合理设置过期时间,避免内存泄漏
  • 使用批量操作代替多次单独操作

安全配置

  • 启用密码认证:requirepass yourpassword
  • 限制网络访问:bind 127.0.0.1
  • 禁用危险命令:rename-command FLUSHALL ""
相关推荐
ITyunwei098710 分钟前
数字化转型与遗留系统:如何为老旧的IT系统“减负“并注入新活力?
运维·网络·数据库
SelectDB24 分钟前
强行拍平?全表扫描? AI Agent 动态 JSON 的观测分析
数据库·人工智能·数据分析
万邦科技Lafite38 分钟前
如何通过 item_search_img API 接口获取淘宝商品信息
java·前端·数据库
雨辰AI42 分钟前
面试题:人大金仓事务隔离级别、MVCC 机制详解(与MySQL差异对比)
数据库·后端·mysql·面试·政务
丑八怪大丑1 小时前
SQL新特性
数据库·sql
磊 子1 小时前
cpu是如何执行程序的?
数据库·操作系统·cpu
赵渝强老师1 小时前
【赵渝强老师】金仓数据库的运行日志文件
数据库·postgresql·oracle·国产数据库
D3bugRealm1 小时前
pgvector:PostgreSQL 原生向量搜索扩展
数据库·其他·postgresql
Thanks_ks2 小时前
分布式锁:Redis 与 Redisson 的工程实践与避坑指南
java·redis·分布式锁·redisson·微服务架构·并发编程·高可用
Java面试题总结2 小时前
PostgreSQL 性能调优:内存、I/O 与连接管理
数据库·postgresql