1.RedisTemplate的介绍
RedisTemplate
是 Spring Data Redis 提供的核心工具类,用于简化 Redis 的交互操作。它封装了底层连接管理、数据序列化、异常处理等细节,支持多种数据结构的操作,并与 Spring 生态无缝集成.
2.操作不同数据结构时的用法
1.字符串(String)
// 写入
redisTemplate.opsForValue().set("user:1", "Alice");
redisTemplate.opsForValue().set("counter", 100, Duration.ofMinutes(10)); // 设置过期时间// 读取
String value = (String) redisTemplate.opsForValue().get("user:1");
Integer counter = (Integer) redisTemplate.opsForValue().get("counter");
2.哈希(Hash)
// 写入单个字段
redisTemplate.opsForHash().put("user:1000", "name", "Bob");
redisTemplate.opsForHash().put("user:1000", "age", 25);// 批量写入
Map<String, Object> userData = new HashMap<>();
userData.put("email", "bob@example.com");
userData.put("city", "New York");
redisTemplate.opsForHash().putAll("user:1000", userData);// 读取字段
String name = (String) redisTemplate.opsForHash().get("user:1000", "name");
Map<Object, Object> allFields = redisTemplate.opsForHash().entries("user:1000");
3.列表(List)
// 左侧插入元素
redisTemplate.opsForList().leftPush("tasks", "task1");
redisTemplate.opsForList().leftPushAll("tasks", "task2", "task3");// 右侧弹出元素(队列消费)
String task = (String) redisTemplate.opsForList().rightPop("tasks");// 获取范围元素
List<Object> firstTwoTasks = redisTemplate.opsForList().range("tasks", 0, 1);
4.集合(Set)
// 添加元素
redisTemplate.opsForSet().add("tags", "java", "redis", "spring");// 判断元素是否存在
boolean exists = redisTemplate.opsForSet().isMember("tags", "redis");// 获取所有成员
Set<Object> tags = redisTemplate.opsForSet().members("tags");
5.有序集合(Sorted set)
// 添加元素(带分数)
redisTemplate.opsForZSet().add("leaderboard", "PlayerA", 100);
redisTemplate.opsForZSet().add("leaderboard", "PlayerB", 200);// 按分数范围查询
Set<Object> topPlayers = redisTemplate.opsForZSet().reverseRange("leaderboard", 0, 2);