Redis 常用数据类型的命令对应的 Java 客户端代码,Spring Data Redis Redis 常用数据类型的命令对应的 Java 客户端代码Spring Data Redis一、真人总结二、AI 总结你好作为一名 Java 程序员在使用 Spring Data Redis 时我们主要通过RedisTemplate类来操作 Redis。Spring Data Redis 将 Redis 的不同数据类型操作封装在opsForValue()、opsForHash()、opsForList()等方法中。以下是 Redis 常用数据类型命令与 Java 客户端代码的对照表帮助你快速上手️ 核心配置与准备在开始之前确保你的pom.xml中引入了依赖并且配置了RedisTemplate。Maven 依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency配置类 (解决序列化乱码问题)默认的JdkSerializationRedisSerializer会导致存储的数据乱码建议配置为StringRedisSerializer或 JSON 序列化器。ConfigurationpublicclassRedisConfig{BeanpublicRedisTemplateString,ObjectredisTemplate(RedisConnectionFactoryfactory){RedisTemplateString,ObjecttemplatenewRedisTemplate();template.setConnectionFactory(factory);// 使用 String 序列化器保证 Key 可读template.setKeySerializer(newStringRedisSerializer());template.setHashKeySerializer(newStringRedisSerializer());// Value 可以使用 String 或 Jackson2JsonRedisSerializer (存对象时推荐 JSON)template.setValueSerializer(newStringRedisSerializer());template.afterPropertiesSet();returntemplate;}} Redis 命令与 Java 代码对照表假设我们已经注入了RedisTemplateAutowired private RedisTemplateString, Object redisTemplate;1. String (字符串)最常用的类型常用于缓存、计数器和分布式锁。Redis 命令Java 代码 (redisTemplate.opsForValue())说明SETkey value.set(key, value)设置键值SETkey value EX seconds.set(key, value, 10, TimeUnit.MINUTES)设置键值及过期时间GETkey.get(key)获取值SETNXkey value.setIfAbsent(key, value)仅当 key 不存在时设置 (分布式锁)INCRkey.increment(key)自增 1DECRkey.decrement(key)自减 1DELkeyredisTemplate.delete(key)删除键代码示例// 设置带过期时间的缓存redisTemplate.opsForValue().set(user:1001,Tom,30,TimeUnit.MINUTES);// 获取Stringuser(String)redisTemplate.opsForValue().get(user:1001);// 计数器自增redisTemplate.opsForValue().increment(view:count);2. Hash (哈希)适合存储对象可以单独修改对象的某个字段而不需要重新序列化整个对象。Redis 命令Java 代码 (redisTemplate.opsForHash())说明HSETkey field value.put(key, field, value)设置哈希字段HGETkey field.get(key, field)获取字段值HGETALLkey.entries(key)获取所有字段和值 (返回 Map)HDELkey field.delete(key, field)删除字段HEXISTSkey field.hasKey(key, field)判断字段是否存在代码示例// 存储用户信息redisTemplate.opsForHash().put(user:info:1001,name,Alice);redisTemplate.opsForHash().put(user:info:1001,age,25);// 获取特定字段Stringname(String)redisTemplate.opsForHash().get(user:info:1001,name);3. List (列表)简单的字符串列表按插入顺序排序常用于消息队列。Redis 命令Java 代码 (redisTemplate.opsForList())说明LPUSHkey value.leftPush(key, value)从左侧头部插入RPUSHkey value.rightPush(key, value)从右侧尾部插入LRANGEkey start stop.range(key, 0, -1)获取列表范围 (0到-1表示全部)LPOPkey.leftPop(key)从左侧头部弹出LLENkey.size(key)获取列表长度代码示例// 模拟消息队列生产者redisTemplate.opsForList().rightPush(queue:order,Order_001);// 消费者Stringorder(String)redisTemplate.opsForList().leftPop(queue:order);4. Set (集合)String 类型的无序集合自动去重支持交集、并集运算。Redis 命令Java 代码 (redisTemplate.opsForSet())说明SADDkey member.add(key, member)添加元素SMEMBERSkey.members(key)获取所有元素SREMkey member.remove(key, member)移除元素SCARDkey.size(key)获取集合大小SINTERkey1 key2.intersect(key1, key2)求交集 (如共同好友)代码示例// 记录文章点赞用户 (自动去重)redisTemplate.opsForSet().add(article:1:likes,user_a,user_b);// 获取所有点赞用户SetObjectlikesredisTemplate.opsForSet().members(article:1:likes);5. ZSet (Sorted Set / 有序集合)带有分数 (score) 的集合元素自动根据分数排序。常用于排行榜。Redis 命令Java 代码 (redisTemplate.opsForZSet())说明ZADDkey score member.add(key, member, score)添加元素及分数ZRANGEkey start stop.range(key, 0, -1)按分数正序获取元素ZREVRANGEkey start stop.reverseRange(key, 0, 9)按分数倒序获取 (前10名)ZREMkey member.remove(key, member)移除元素ZINCRBYkey increment member.incrementScore(key, member, 1)增加元素的分数代码示例// 游戏排行榜redisTemplate.opsForZSet().add(game:rank,PlayerA,100);redisTemplate.opsForZSet().add(game:rank,PlayerB,200);// 获取前三名 (倒序)SetObjecttop3redisTemplate.opsForZSet().reverseRange(game:rank,0,2); 专家提示序列化问题如果你存储的是 Java 对象如User类直接存入可能会报错或乱码。建议使用Jackson2JsonRedisSerializer将对象转为 JSON 字符串存储或者手动转为 JSON 字符串后使用StringRedisSerializer。批量操作对于大量数据的增删改使用redisTemplate.executePipelined()管道操作可以显著提高性能。Key 的规范建议使用冒号分隔的命名方式如项目名:模块名:ID(例如mall:user:1001)便于管理和排查问题。希望这份对照表能帮你在项目中更高效地使用 Redis如果有具体的业务场景需要实现欢迎继续提问。