粉粉蕉的笔记本粉粉蕉的笔记本
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
    • Maven
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 前端

    • Vue学习笔记
    • 前端常见问题汇总
  • 设计模式
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • openclaw实战笔记
  • linux命令速查
  • windows命令速查
  • Docker笔记
  • kubernetes学习笔记
  • kubernetes实操笔记
  • 运维工具大全
  • git操作宝典
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • 健身

    • 笔记
    • 训练计划
  • 读书笔记

    • 《深度学习》
  • 其他

    • RSS
    • 资源导航
    • 医保
    • 装修攻略
我也想搭建这样的博客!
🚋开往
  • JAVA

    • 代码笔记
    • Java8实战
    • 分布式事务实战(Seata)
    • 模板引擎(FreeMarker)
    • SpringSecurity
    • Maven
  • PYTHON

    • 概述
    • python3
    • python3(菜鸟教程)
    • pandas
    • numpy
    • matplotlib
  • 中间件

    • Kafka
    • RocketMQ
    • Redis
    • MongoDB
    • Elastic Search
  • 数据库

    • Mysql
  • 前端

    • Vue学习笔记
    • 前端常见问题汇总
  • 设计模式
  • 大数据

    • 概览
    • Hadoop
    • Hive
  • 机器学习

    • 机器学习概览
  • openclaw实战笔记
  • linux命令速查
  • windows命令速查
  • Docker笔记
  • kubernetes学习笔记
  • kubernetes实操笔记
  • 运维工具大全
  • git操作宝典
  • 概率论
  • 线性代数
  • 统计学
  • 金融知识学习
  • 聚宽
  • 因子分析
  • 健身

    • 笔记
    • 训练计划
  • 读书笔记

    • 《深度学习》
  • 其他

    • RSS
    • 资源导航
    • 医保
    • 装修攻略
我也想搭建这样的博客!
🚋开往
    • 概述
    • 安装&项目结构
    • API
    • 数据结构
    • 使用场景
    • SpringBoot集成

Redis API

【Redis Client】命令

键操作

##### 键操作
# 【删除键】(1为删除成功,0为删除失败)
DEL <key>
EXISTS <key>
#【设置过期时间(几秒后)】
EXPIRES <key> <seconds>
#【设置过期时间(时间点)】
EXPIREAT <key> <timestamp>
#【根据给定模式匹配key】(会扫描整个键空间,生产环境禁用!可用SCAN代替)
KEYS <pattern>
#【返回key的过期时间】(-2为键不存在;-1为永不过期;>0为剩余秒数
TTL <key>
# SCAN的用法
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

# 获取所有键(默认查10条,0表示游标,第一次传0)
SCAN 0

# 返回示例:
#1) "38"   -- 38 表示下一页的游标
#2) 1) "key1"
#   2) "key2"
#   3) "user:100"

SCAN 38

#1) "0" -- 返回0则表示键已遍历完毕
#2) 1) "key3"
#   2) "session:abc"

# 使用正则表达式匹配键
SCAN 0 MATCH user:*

# 使用COUNT表明每次查询数量
SCAN 0 MATCH user:* COUNT 100

键值对操作

##### 键值对操作
SET <key> <value> 
GET <key>
# SET AND GET
SET name dyz #单值缓存
GET name #单值获取,返回dyz
# MSET:批量插入
MSET dyz_obj:1:name dyz dyz_obj:1:id 1 #json对象缓存 
GET dyz_obj:1:name #获取对象属性,返回dyz
# SETEX:设置过期时间的同时设置值
SETEX <key> <seconds> <value>
# SETNX:【若key不存在,才存入该键值对】 
SETNX <key> <value> #常用于分布式锁
# GETSET:【置新值,返回旧值】
GETSET <key> <value>

#【批量添加】
MSET <key> <value> <key> <value>
#【批量获取】
MGET <key> <key>

#【返回Value的长度】
STRLEN <key>
#【追加字符串】
APPEND <key> <value>
#【返回子字符串】
GETRANGE <key> <start> <end>

HASH表操作

##### HASH表操作
HSET <hashname> <key> <value>
#【批量添加】
HMSET <hashname> <key1> <value1> <key2> <value2> ... 
HGET <hashname> <key>
#【返回所有键值对】
HGETALL <hashname>
#【返回所有键】
HKEYS <hashname>
#【返回所有值】
HVALS <hashname>
#【返回键值对的数量】
HLEN <hashname>
#【移除某个键值对】
HDEL <hashname> <key>

双向链表操作

##### 双向链表操作(栈、队列、有限集合、消息队列)
#【将给定值推入到列表左端】
LPUSH key value1 value2 ...
#【从列表的左端弹出一个值,并返回被弹出的值】
LPOP key
#【通过索引获取列表中的元素。你也可以使用负数下标】
LINDEX key index
#【只保留N个元素】
LTRIM key N
#【获取列表在给定范围上的所有值】
LRANGE key startindex endindex
#【当列表没有值时,阻塞等待,直至有值可取时才继续执行】 
BRPOP key
#【当列表没有值时,阻塞等待数秒,直至有值可取或超时才继续执行】 
BRPOP key seconds
## 双向链表常见用法:
#lrange mylist 0 -1 返回列表所有值
#lpush+lpop=Stack(栈)
#lpush+rpop=Queue(队列)
#lpush+ltrim=Capped Collection(有限集合)
#lpush+brpop=Message Queue(消息队列)

集合操作

##### 集合操作
#【往集合中添加成员】
sadd <setname> <key>
#【返回集合中所有成员】
smembers <setname>
#【获取集合size】
SCARD key
#【判断 member 元素是否是集合 key 的成员】
SISMEMBER key member
#【从集合中随机抽取n个成员】 
SRANDMEMBER key n
#【从集合中随机抽取n个成员并删除】 
SPOP key n
#【交集】
SINTER set1 set2 set3
#【并集】
SUNION set1 set2 set3
#【差集】
SDIFF set1 set2 set3  #第一个集合的元素减去剩余集合的并集的元素

有序集合操作

##### 有序集合操作
#【往集合添加成员,并标记该成员的分值】
zadd <setname> <score> <key> <score> <key> ...
#【获取集合在给定范围上的所有值】
ZRANGE key startindex endindex
#【删除某个成员】
ZREM zset-key member1

bitmap操作

##### bitmap操作(2.2.0版本新增)
#【将某个bitmap的第offset位设置位0或者1】
setBit key <offset> <value> #value=0或者1
#【取某个bitmap的第offset位得值】
getBit key <offset>
#【返回指定区间里,某个bitmap位为1的个数】
bitCount key [start] [end]

Stream操作

# 1.发送消息到队列mystream(若之前没有该队列,会自动创建)
XADD mystream * senior-id 1001 temperature 36.5
"1734567890123-0"
# * 表示由Redis创建消息ID,“1734567890123-0”就是成功后生成的ID
# 消息携带着2个字段:senior-id、temperature

# 2.获取队列长度
XLEN mystream
1

# 3.独立消费
XREAD COUNT 1 STREAMS mystream 0   # 需要指定从哪个ID开始读取(ID=0)
XREAD BLOCK 0 STREAMS mystream $   # 阻塞等待新消息

# 3.按消费者组消费
XGROUP CREATE mystream mygroup 0 MKSTREAM   # 创建消费者组mystream(MKSTREAM 可同时创建流)
XREADGROUP GROUP mygroup consumer1 COUNT 1 STREAMS mystream > # 按消费者组消费1条消息,> 表示读取尚未分发的消息

# 4.消费完毕确认(**只有按消费者组消费时需要。**若不确认,则消息的状态=待处理)
XACK mystream mygroup 1734567890123-0
1

# 5.查看待处理消息
XPENDING mystream mygroup
1) (integer) 0    # 待处理消息数量
2) (nil)          # 最小 ID
3) (nil)          # 最大 ID
4) (nil)          # 各消费者情况

# 6.认领状态为“待处理”,空闲时间超过60s,id为1734567890123-0的消息
XCLAIM mystream mygroup consumer3 60000 1734567890123-0
1) 1) "1734567890123-0"
   2) 1) "sensor-id"
      2) "1001"
      3) "temperature"
      4) "23.5"
      
# 7.只保留最新的1w条消息
XTRIM mystream MAXLEN ~ 10000

事务相关操作

#开启事务
MULTI 
#输入一组命令
SET user:1001:name "Alice"
SET user:1001:age "30"
INCR user:1001:age
#执行事务中的命令
EXEC
#放弃事务中的命令
DISCARD

【Java】RedisTemplate

Last Updated: 3/31/26, 10:03 AM
Contributors: dongyz8
Prev
安装&项目结构
Next
数据结构