stringRedisTemplate.opsForHash().entries
Redis Hash 操作详解
一、entries() 方法
1. 基本作用
Map<Object,Object> userMap=stringRedisTemplate.opsForHash().entries(key);作用:获取 Hash 中所有的字段和值,返回一个 Map。
2. 简单理解
Redis Hash存储:
{
"id": "1",
"nickName": "张三",
"icon": "xxx"
}↓ entries()方法
返回Map:
{
"id": "1",
"nickName": "张三",
"icon": "xxx"
}
解释为什么需要转换
二、本质区别
1. Redis Hash(Redis 的数据结构)
Redis Hash = Redis数据库中的数据
- 存储在Redis服务器中
- Java代码不能直接使用
- 需要通过Redis客户端操作
2. Java Map(Java 的数据结构)
Java Map = Java程序中的数据结构
- 存储在Java程序的内存中
- Java代码可以直接使用
- 可以直接操作
三、为什么需要转换?
1. 不同系统之间的数据
Redis Hash(Redis服务器)
↓ entries()方法(转换)
Java Map(Java程序)
↓ 使用
Java代码可以直接操作
2. 用生活例子理解
Redis Hash = 银行里的钱(存在银行)
Java Map = 你手里的现金(可以花)entries() = 从银行取钱,变成现金
四、实际执行过程
步骤1:Redis 中存储(Hash 结构)
Redis服务器中:
Key: "login:token:abc123"
Value (Hash): {
"id": "1",
"nickName": "张三",
"icon": "xxx"
}
这是 Redis 的数据,Java 代码不能直接使用。
步骤2:通过 entries() 获取并转换
Map<Object,Object> userMap = stringRedisTemplate.opsForHash()
.entries("login:token:abc123");
执行过程:
- Java 程序向 Redis 发送请求
- Redis 返回 Hash 数据
- entries() 把 Redis 的 Hash 转换成 Java 的 Map
- 返回 Java Map 对象
步骤3:Java 代码使用 Map
// 现在userMap是Java的Map,可以直接使用
UserDTO userDTO = BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false);
// ↑ 这里可以直接用Java的方法操作五、转换的必要性
1. 系统之间的桥梁
Redis(数据库系统)
↓ entries()(转换方法)
Java(编程语言)
↓ 使用
Java代码可以直接操作
2. 数据格式转换
Redis Hash格式 → Java Map格式
(Redis能理解的) (Java能理解的)
总结
- 虽然看起来一样,但 Redis Hash 和 Java Map 是不同系统的数据结构
- entries() 的作用是把 Redis 的数据转换成 Java 能用的格式
- 转换后,Java 代码才能直接操作这些数据
- 这是不同系统之间数据交互的必要步骤
简单记忆:
- Redis Hash = 银行里的钱(需要取出来)
- Java Map = 手里的现金(可以直接用)
- entries() = 从银行取钱(转换成现金)
