Redis常用命令
Redis常用命令
本文首先介绍Redis的安装过程,然后介绍 Redis 的常用命令,涵盖 字符串、哈希、列表、集合、有序集合、键操作、事务、发布/订阅 等核心功能。
具体可进一步参考:
- 官方文档:https://redis.io/commands
- 快速参考:Redis 命令速查表
一、Redis安装
1. 安装 Redis
使用 Homebrew 安装 Redis 非常简单:
brew install redis
2. 启动 Redis 服务
安装完成后,可以通过以下命令启动 Redis 服务:
brew services start redis
如果希望 Redis 在系统启动时自动运行,可以使用上述命令;否则,也可以手动启动:
redis-server /usr/local/etc/redis.conf
3. 验证安装
通过以下命令检查 Redis 是否正常运行:
redis-cli ping
如果返回 PONG,说明 Redis 正在运行。
4. 配置 Redis
Redis 的默认配置文件位于 /usr/local/etc/redis.conf。你可以根据需求修改配置,例如:
- 后台运行:默认已启用,但可通过
daemonize yes确保。 - 绑定地址:默认监听
127.0.0.1,若需远程访问,可修改bind 0.0.0.0(不推荐在生产环境中使用)。 - 持久化配置:修改
save或启用 AOF(Append Only File):appendonly yes
修改配置后,重启 Redis 生效:
brew services restart redis
5. 常见问题
权限问题
如果启动时遇到权限错误(如无法绑定端口),尝试:
chmod 755 /usr/local/var/db/redis
端口占用
Redis 默认使用 6379 端口。若端口被占用,修改配置文件中的 port 参数后重启服务。
服务未启动
检查日志:
tail -f /usr/local/var/log/redis.log
6. 卸载 Redis
如果需要卸载 Redis:
brew services stop redis
brew uninstall redis
7. 快速测试
- 启动 Redis 服务。
- 连接到控制台:
redis-cli - 执行简单操作:
SET test "Hello Redis" GET test
二、Redis常用命令
1. 查看状态
启动 Redis 服务
brew services start redis
# 或者手动启动
redis-server
停止 Redis 服务
brew services stop redis
# 或者手动停止
redis-cli shutdown
查看 Redis 服务状态
brew services list
连接到 Redis 控制台
redis-cli
2. 字符串(String)
Redis 最基础的数据类型,存储单个字符串值。
| 命令 | 描述 | 示例 |
|---|---|---|
SET key value |
设置键 key 的值为 value |
SET name "Alice" |
GET key |
获取键 key 的值 |
GET name → "Alice" |
GETSET key value |
设置键 key 的值为 value 并返回旧值 |
GETSET name "Bob" → 返回 "Alice" |
INCR key |
将键 key 的值增 1(整数) |
INCR count → 如果 count 是 1 → 2 |
DECR key |
将键 key 的值减 1(整数) |
DECR count → 从 2 → 1 |
APPEND key value |
追加内容到字符串值末尾 | APPEND message "Hello" → "Hello World" |
3. 哈希(Hash)
存储键值对的集合,适合存储对象。
| 命令 | 描述 | 示例 |
|---|---|---|
HSET key field value |
设置哈希表 key 中的字段 field 的值为 value |
HSET user:1001 name "Alice" |
HGET key field |
获取哈希表 key 中字段 field 的值 |
HGET user:1001 name → "Alice" |
HGETALL key |
获取哈希表 key 中所有字段和值 |
HGETALL user:1001 → 所有字段和值 |
HMSET key field value [field value ...] |
同时设置多个字段值 | HMSET user:1001 age 30 email "alice@example.com" |
HDEL key field |
删除哈希表 key 中的字段 field |
HDEL user:1001 age |
4. 列表(List)
按插入顺序排序的字符串列表,支持两端操作。
| 命令 | 描述 | 示例 |
|---|---|---|
LPUSH key value |
将值 value 插入列表 key 的头部 |
LPUSH list "A" → 列表变为 ["A"] |
RPUSH key value |
将值 value 插入列表 key 的尾部 |
RPUSH list "B" → 列表变为 ["A", "B"] |
LPOP key |
移除并返回列表 key 的头部元素 |
LPOP list → 返回 "A" |
RPOP key |
移除并返回列表 key 的尾部元素 |
RPOP list → 返回 "B" |
LRANGE key start stop |
获取列表 key 中指定范围的元素(索引从0开始) |
LRANGE list 0 -1 → 获取所有元素 |
5. 集合(Set)
无序且不重复的字符串集合。
| 命令 | 描述 | 示例 |
|---|---|---|
SADD key member |
向集合 key 添加成员 member |
SADD fruits "apple" |
SMEMBERS key |
获取集合 key 中的所有成员 |
SMEMBERS fruits → ["apple", "banana"] |
SISMEMBER key member |
判断 member 是否是集合 key 的成员 |
SISMEMBER fruits "apple" → 1(是) |
SREM key member |
从集合 key 中移除成员 member |
SREM fruits "apple" |
6. 有序集合(Sorted Set)
集合的扩展,每个成员关联一个分数(score),用于排序。
| 命令 | 描述 | 示例 |
|---|---|---|
ZADD key score member |
向有序集合 key 添加成员 member 及其分数 |
ZADD scores 90 "Alice" |
ZRANGE key start stop [WITHSCORES] |
按分数从小到大获取范围成员 | ZRANGE scores 0 -1 → ["Alice", "Bob"] |
ZREVRANGE key start stop [WITHSCORES] |
按分数从大到小获取范围成员 | ZREVRANGE scores 0 -1 → ["Bob", "Alice"] |
ZSCORE key member |
获取成员 member 的分数 |
ZSCORE scores "Alice" → 90 |
7. 键(Key)操作
管理键的生命周期和属性。
| 命令 | 描述 | 示例 |
|---|---|---|
EXPIRE key seconds |
设置键 key 的过期时间为 seconds 秒 |
EXPIRE token 3600 → 1 小时后过期 |
TTL key |
获取键 key 的剩余生存时间(秒) |
TTL token → 3500 |
DEL key |
删除键 key |
DEL name |
KEYS pattern |
查找所有匹配 pattern 的键(慎用,可能阻塞) |
KEYS user:* → ["user:1001", "user:1002"] |
FLUSHDB |
删除当前数据库中的所有键 | |
FLUSHALL |
删除所有数据库中的所有键 |
8. 事务(Transactions)
确保一组命令原子性执行。
| 命令 | 描述 | 示例 |
|---|---|---|
MULTI |
开始事务 | MULTI |
EXEC |
执行所有事务中的命令 | EXEC → 执行所有已入队的命令 |
DISCARD |
取消事务并丢弃所有命令 | DISCARD |
WATCH key |
监视键 key,在事务执行前若值被修改则事务失败 |
WATCH count |
9. 发布/订阅(Pub/Sub)
实现消息队列模式。
| 命令 | 描述 | 示例 |
|---|---|---|
PUBLISH channel message |
将消息发布到 channel 频道 |
PUBLISH chat "Hello everyone!" |
SUBSCRIBE channel |
订阅 channel 频道的消息 |
SUBSCRIBE chat |
UNSUBSCRIBE channel |
取消订阅 channel 频道 |
UNSUBSCRIBE chat |
10. 服务器信息与控制
管理 Redis 服务器状态。
| 命令 | 描述 | 示例 |
|---|---|---|
INFO |
获取 Redis 服务器的运行信息 | INFO → 返回详细配置和统计信息 |
PING |
测试与服务器的连接 | PING → 返回 "PONG" |
SHUTDOWN |
安全关闭 Redis 服务器 | SHUTDOWN |
11. 持久化与集群
| 命令 | 描述 | 示例 |
|---|---|---|
SAVE |
强制立即持久化数据到磁盘(阻塞操作) | SAVE |
BGSAVE |
异步持久化数据到磁盘 | BGSAVE |
BGREWRITEAOF |
异步重写 AOF 文件 | BGREWRITEAOF |
12. 其他常用命令
| 命令 | 描述 | 示例 |
|---|---|---|
| `SORT key [BY pattern] [GET pattern] [ASC | DESC] [LIMIT offset count]` | 对列表或集合排序并返回结果 |
EVAL script numkeys key [key ...] arg [arg ...] |
执行 Lua 脚本(原子操作) | EVAL "return redis.call('GET', KEYS[1])" 1 key |
SCAN cursor |
迭代扫描键空间(替代 KEYS,避免阻塞) |
SCAN 0 MATCH user:* COUNT 10 |
注意事项
- 时间复杂度:部分命令(如
KEYS)可能阻塞服务器,生产环境慎用。 - 事务:Redis 的事务通过
MULTI/EXEC实现,但不保证 ACID,仅保证原子性。 - 数据类型选择:根据场景选择合适的数据类型(如列表适合队列,有序集合适合排行榜)。
附录
这里是之前在黑马教程学习Redis并总结的,一并保存
# 启动 redis 服务端
redis-server
# 启动的时候指定配置文件,不然在配置文件里面设置的密码不生效
redis-server redis.windows.conf
# 启动 redis 客户端
redis-cli
# 设置键值对
SET key value
# 获取key所对应的 value
GET key
# 设置一个或多个指定 key 的值
MSET key1 value1 key2 value2
# 获取一个或多个指定 key 的值
MGET key1 key2
# 返回 key 所储存的字符串值的长度
STRLEN key
# 将 key 中储存的数字值增一
INCR key
# 将 key 中储存的数字值减
DECR key
# 判断指定 key 是否存在
EXISTS key
# 删除指定 key
DEL key(通用)
# 给指定 key 设置过期时间
EXPIRE key seconds(通用)
# 查看一个key的剩余有效期
TTL key
# 查找所有符合给定模式的key
KEYS pattern
# 返回key所存储的值的类型
TYPE key
# redis默认有16个库,编号为0-15,选择0号库
select 0
# Redis 支持的几种主要数据类型及常用操作
## 1. 字符串(String)用于存储简单的键值对,可以是文本、数字等。
# 设置值
SET key value
# 获取值
GET key
# 自增
INCR key
# 自减
DECR key
# 获取并设置新值
GETSET key value
# 设置值同时设置过期时间
SETEX key value
# 当key不存在时设置值
SETNX key value
## 2. 哈希(Hash)用于存储对象(字段-值对)的集合。
# 设置字段值
HSET key field value
# 获取字段值
HGET key field
# 获取所有字段和值
HGETALL key
# 获取所有field
HKEYS key
# 获取所有value
HVALS key
# 删除字段
HDEL key field
# 判断字段是否存在
HEXISTS key field
## 3. 列表(List)
- 用于存储有序的字符串集合,可以从两端操作。
- 常用操作:
# 在左边插入
LPUSH key value
# 在右边插入
RPUSH key value
# 从左边弹出
LPOP key
# 从右边弹出
RPOP key
# 获取列表长度
LLEN key
# 获取指定范围内的元素
LRANGE key start stop
## 4. 集合(Set)用于存储无序的唯一字符串集合。
# 添加元素
SADD key value
# 删除元素
SREM key value
# 判断元素是否存在
SISMEMBER key value
# 获取所有元素
SMEMBERS key
# 获取集合大小
SCARD key
# 获取多个集合的交集
SINTER key1 [key2]
# 获取多个集合的并集
SUNION key1 [key2]
## 5. 有序集合(Sorted Set)类似于集合,但每个元素会关联一个分数,根据分数排序。
# 添加元素及其分数
ZADD key score value [score2 value2]
# 删除元素
ZREM key value
# 获取指定分数范围内的元素
ZRANGEBYSCORE key start stop [WITHSCORES]
# 获取元素的分数
ZSCORE key value
# 获取集合大小
ZCARD key
# 对指定value的score加上增量increment
ZINCRBY key increment value
## 6. 位图(Bitmap)用于操作字符串的位(bit)。
# 设置或获取某一位的值
SETBIT key offset value
# 获取某一位的值
GETBIT key offset
# 统计位图中值为1的位的个数
BITCOUNT key
## 7. HyperLogLog 用于基数统计,适合用于统计海量数据的唯一值数量。
# 添加元素
PFADD key element
# 获取基数估计值
PFCOUNT key
## 8. 地理空间(Geo)用于存储地理位置信息,并进行相关操作。
# 添加地理位置
GEOADD key longitude latitude member
# 获取地理位置
GEOPOS key member
# 计算两个位置之间的距离
GEODIST key member1 member2
# 根据位置查询范围内的成员
GEORADIUS key longitude latitude radius unit

浙公网安备 33010602011771号