Redis的常用命令

Redis常用命令

注意:

  • []表示可选参数;
  • |表示"或";
  • ...表示可重复。

字符串命令

设置

SET key value [EX seconds | PX milliseconds] [NX|XX]

  • EX seconds:设置过期时间,单位秒。
  • PX milliseconds:设置过期时间,单位毫秒。
  • NX:仅当键不存在时设置。
  • XX:仅当键已存在时设置。

示例:

bash 复制代码
# 1. 设置一个10秒后过期的锁,仅在锁不存在时设置
SET distributed_lock "owner_1" EX 10 NX			# 返回:OK  (表示设置成功,获得了锁)

# 2. 键已存在时,使用XX条件更新值并重置过期时间
SET user_session:abc "new_data" EX 3600 XX		# 返回:OK  (表示更新成功)

# 3. 使用NX条件时,如果键已存在,则操作失败
SET distributed_lock "owner_2" EX 10 NX			# 返回:(nil)  (表示设置失败,锁已被他人持有)

获取

GET key:获取键对应的字符串值。

bash 复制代码
TTL distributed_lock							# (integer) -2
GET distributed_lock							# 返回:(nil)	(表示已过期被删除了)

批量

MSET key value [key value ...] / MGET key [key ...]:批量设置/获取。

bash 复制代码
MSET k1 "v1" k2 "v2"
# 返回:OK
MGET k1 k2 k3
# 返回:1) "v1" 2) "v2" 3) (nil)  # 不存在的键返回 nil

删除

DEL key:删除某个键。

变更

INCR key / DECR key: 将键的整数值加一/减一。

bash 复制代码
SET count 10
INCR count
# 返回:(integer) 11

列表命令

设置

LPUSH key element [element ...]

RPUSH key element [element ...]

示例:

bash 复制代码
LPUSH tasks "task1" "task2" "task3"

获取

LRANGE key start stop

示例:

bash 复制代码
LRANGE news 0 9 		# 获取列表前10个元素

哈希表命令

设置

HSET key field value [field value ...]

示例:

bash 复制代码
HSET user:1000 name "Alice" age 30 email "alice@example.com"

获取

HGET key field

bash 复制代码
HGET user:1000 name			# "Alice"
HGET user:1000 sex			# (nil)

批量

HMGET key field [field ...]

bash 复制代码
HMGET user:1000 age name
# 1) "30"
# 2) "Alice"

HGETALL key

bash 复制代码
HGETALL user:1000
# 1) "name"
# 2) "Alice"
# 3) "age"
# 4) "30"
# 5) "email"
# 6) "alice@example.com"

删除

HDEL key field [field ...]

bash 复制代码
HDEL user:1000 "name"
# (integer) 1
HGETALL user:1000
# 1) "age"
# 2) "30"
# 3) "email"
# 4) "alice@example.com"

变更

HINCRBY key field increment:为指定字段的整数值 增加 increment(可为负)。

bash 复制代码
HINCRBY user:1000 age 10
# (integer) 40
HGETALL user:1000
# 1) "age"
# 2) "40"
# 3) "email"
# 4) "alice@example.com"

集合命令

设置

SADD key member [member ...]

示例:

bash 复制代码
# 1. 向标签集合添加元素
SADD tags:post "Redis" "Database" "Cache"
# 返回:(integer) 3

# 2. 再创建一个集合
SADD my_fav "Redis" "Go" "Python"
# 返回:(integer) 3

获取

SINTER set1 set2:返回给定集合的交集。

bash 复制代码
# 3. 求两个集合的交集(共同喜爱的技术)
SINTER tags:post my_fav
# 返回:
# 1) "Redis"  (两个集合中都存在 "Redis")

SUNION set1 set2:返回给定集合的并集。

bash 复制代码
SUNION  tags:post my_fav
# 1) "Redis"
# 2) "Cache"
# 3) "Database"
# 4) "Python"
# 5) "Go"

SMEMBERS key:查找集合中的所有元素。

bash 复制代码
SMEMBERS my_fav
# 1) "Python"
# 2) "Go"
# 3) "Redis"

``SISMEMBER key member`:查询中是否存在元素member。

bash 复制代码
SISMEMBER my_fav "Python"
# (integer) 1
SISMEMBER my_fav "Cache"
# (integer) 0

删除

SREM key member [member ...]:删除集合中的某个元素。

bash 复制代码
SMEMBERS my_fav
# 1) "Python"
# 2) "Go"
# 3) "Redis"
SREM my_fav "Go"
# (integer) 1
SMEMBERS my_fav
# 1) "Python"
# 2) "Redis"

有序集合命令

设置

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

  • NX:仅添加成员,不更新已存在成员的分数。
  • XX:仅更新已存在成员的分数,不添加新成员。
  • CH:返回被更改(新增或更新)的成员数量,而非全部新增数量。
  • INCR:将score视为增量(类似ZINCRBY)。

示例:

bash 复制代码
ZADD leaderboard NX 80 "NewPlayer"	# 仅当NewPlayer不存在时才添加
ZADD leaderboard INCR 5 "Alice"		# 给Alice的分数增加5

获取

ZRANGE/ZREVRANGE key start stop [withscores]

  • ZRANGE:顺序输出(按分数升序)
  • ZREVRANGE:逆序输出(按分数降序)
  • start, stop\]是闭区间。

获取所有元素

zrange tables 0 -1

1) "t5"

2) "t4"

3) "t1"

4) "t3"

5) "t2"

6) "t6"

zrange tables 0 -1 withscores # 顺序输出

1) "t5"

2) "59"

3) "t4"

4) "80"

5) "t1"

6) "90"

7) "t3"

8) "90"

9) "t2"

#10) "92"
#11) "t6"
#12) "99"

zrevrange tables 0 -1 withscores # 逆序输出

1) "t6"

2) "99"

3) "t2"

4) "92"

5) "t3"

6) "90"

7) "t1"

8) "90"

9) "t4"

#10) "80"
#11) "t5"
#12) "59"

复制代码
`ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]`

```bash
zrangebyscore tables 90 100
# 1) "t1"
# 2) "t3"
# 3) "t2"
# 4) "t6"

zrangebyscore tables 90 100 withscores
# 1) "t1"
# 2) "90"
# 3) "t3"
# 4) "90"
# 5) "t2"
# 6) "92"
# 7) "t6"
# 8) "99"

通用键管理命令

查找key

KEYS pattern: 查找匹配模式的键(生产环境慎用 ,推荐SCAN)。

bash 复制代码
KEYS user:*
# 可能返回:
# 1) "user:1000"
# 2) "user:1001"

删除键

DEL key [key ...]: 删除键。

bash 复制代码
SET temp "data"
DEL temp
# 返回:(integer) 1  # 成功删除1个

检查键是否存在

bash 复制代码
EXISTS username
# 返回:(integer) 1  # 存在

查看key的类型

bash 复制代码
TYPE user:1000
# 返回:hash

续约命令

设置键的过期时间

bash 复制代码
EXPIRE username 300
# 返回:(integer) 1  # 设置成功

查看剩余生存时间

bash 复制代码
EXPIRE username 300
# 返回:(integer) 1  # 设置成功
相关推荐
NineData1 小时前
NineData 社区版 V4.9.0 发布!支持应用切换能力以降低迁移风险,慢查询新增外部采集来源
数据库·sql·ninedata·社区版·v4.9.0·sql开发工具·navicat平替
TongSearch2 小时前
Tongsearch分片的分配、迁移与生命周期管理
java·服务器·数据库·elasticsearch·tongsearch
跨境小技2 小时前
2026 Shopee数据抓取逐步教程:技术难点、解决思路与实战方法
前端·数据库·网络爬虫
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(9):数据库操作——数据写入从CLI到集群部署的六种实战
数据库·apache·时序数据库·iotdb
l1t2 小时前
DeepSeek总结的数据库性能教学文章
网络·数据库·oracle
认真的薛薛2 小时前
数据库-redis与mongo
数据库·mysql
Re.不晚2 小时前
Redis核心原理底层机制——持久化【RDB与AOF】
数据库·redis·缓存
seeInfinite2 小时前
LLM面试相关汇总
数据库·redis·缓存
小刘的大模型笔记2 小时前
向量数据库优势和劣势 —— 全方位解析适用场景与使用边界
数据库