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是闭区间。
bash 复制代码
# 获取所有元素
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  # 设置成功
相关推荐
10岁的博客1 小时前
DevEco Code 的 Plan+Build 模式:审方案再执行的技术深度解析
大数据·数据库·人工智能
buhuizhiyuci1 小时前
【算法篇】位运算 —— 基础篇
java·数据库·算法
youtootech1 小时前
HarmonyOS《柚兔学伴》项目实战08-关系型数据库入门——待办事项持久化
jvm·数据库·华为·harmonyos
微三云 - 廖会灵 (私域系统开发)2 小时前
电商系统国际化架构设计:多语言、多币种、多时区、多税制的全链路实现
java·前端·数据库
万亿少女的梦1682 小时前
基于微信小程序、Spring Boot与Vue3的智慧养老管理系统设计与实现
spring boot·redis·微信小程序·mybatis·vue3
周杰伦的稻香2 小时前
PostgreSQL中的METHOD(认证方法)
数据库·postgresql
万岳科技系统开发2 小时前
智慧医院小程序开发满足医疗机构多场景服务需求
数据库·学习·小程序
kisbad2 小时前
Day 012|Embedding 和向量数据库:知识库检索到底在检什么
数据库·python·embedding·agent
谷禾牛博3 小时前
肠道菌群检测流程及差异和技术门槛在哪里?
数据库·经验分享·功能测试
Zhu7583 小时前
对docker环境的postgresql数据库做快速初始化
数据库·docker·postgresql