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
