# Redis 常用指令标签:...#,常用,##,元素,Redis,获取,指令,bash From: https://www.cnblogs.com/xiaopo/p/18676566
## 基础命令
### 启动与连接
```bash
# 启动 Redis 服务
redis-server
# 连接 Redis 客户端
redis-cli
```
### 基本操作
```bash
# 检查 Redis 服务是否运行
ping
# 返回结果: PONG
# 获取 Redis 的版本信息
info
# 查看所有键
keys *
# 删除键
del <key>
# 检查键是否存在
exists <key>
# 返回结果: 1 表示存在, 0 表示不存在
# 设置键的过期时间
expire <key> <seconds>
# 查看键的剩余存活时间
ttl <key>
# -1 表示没有设置过期时间,-2 表示键不存在
# 持久化某个键,移除其过期时间
persist <key>
```
## 字符串 (String)
```bash
# 设置键值
set <key> <value>
# 获取键值
get <key>
# 设置键值并设置过期时间(秒)
setex <key> <seconds> <value>
# 仅当键不存在时设置值
setnx <key> <value>
# 获取子字符串
getrange <key> <start> <end>
# 追加值到已有键
append <key> <value>
# 获取并更新值
getset <key> <value>
# 自增/自减
tincr <key>
decr <key>
incrby <key> <number>
decrby <key> <number>
```
## 哈希 (Hash)
```bash
# 设置哈希字段值
hset <key> <field> <value>
# 获取哈希字段值
hget <key> <field>
# 设置多个字段值
hmset <key> <field1> <value1> <field2> <value2> ...
# 获取多个字段值
hmget <key> <field1> <field2> ...
# 获取所有字段和值
hgetall <key>
# 删除字段
hdel <key> <field>
# 检查字段是否存在
hexists <key> <field>
# 获取字段数量
hlen <key>
# 获取所有字段
hkeys <key>
# 获取所有值
hvals <key>
```
## 列表 (List)
```bash
# 从左侧插入元素
lpush <key> <value1> <value2> ...
# 从右侧插入元素
rpush <key> <value1> <value2> ...
# 从左侧弹出元素
lpop <key>
# 从右侧弹出元素
rpop <key>
# 获取列表长度
llen <key>
# 获取指定范围的元素
lrange <key> <start> <stop>
# 按索引设置值
lset <key> <index> <value>
# 移除指定值
lrem <key> <count> <value>
```
## 集合 (Set)
```bash
# 添加元素
sadd <key> <member1> <member2> ...
# 删除元素
srem <key> <member>
# 检查元素是否存在
sismember <key> <member>
# 获取集合的所有元素
smembers <key>
# 获取集合的大小
scard <key>
# 随机获取一个或多个元素
srandmember <key> [count]
```
## 有序集合 (Sorted Set)
```bash
# 添加元素
zadd <key> <score1> <member1> <score2> <member2> ...
# 获取指定范围的元素(按分数排序)
zrange <key> <start> <stop> [WITHSCORES]
# 获取指定范围的元素(按分数逆序)
zrevrange <key> <start> <stop> [WITHSCORES]
# 删除元素
zrem <key> <member>
# 获取集合的大小
zcard <key>
# 获取成员的分数
zscore <key> <member>
# 获取指定分数范围内的元素
zrangebyscore <key> <min> <max> [WITHSCORES]
```
## 发布与订阅 (Pub/Sub)
```bash
# 订阅频道
subscribe <channel>
# 发布消息
publish <channel> <message>
```
## 事务 (Transaction)
```bash
# 开始事务
multi
# 执行事务
exec
# 放弃事务
discard
```
## 脚本 (Lua)
```bash
# 执行 Lua 脚本
eval <script> <numkeys> <key1> <key2> ... <arg1> <arg2> ...
# 加载脚本到缓存
script load <script>
# 检查脚本是否在缓存中
script exists <sha1>
# 杀死当前运行的脚本
script kill
```
## 其他
```bash
# 清空当前数据库
flushdb
# 清空所有数据库
flushall
# 切换数据库
select <db-index>
# 保存数据到磁盘
save
# 异步保存数据到磁盘
bgsave
# 查看慢查询日志
slowlog get [count]