目录
一、连接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 ""