当前位置: 首页 > news >正文

免费做流程图的网站/企业营销网站

免费做流程图的网站,企业营销网站,供应链管理系统的功能,网站线上投票怎样做以下是 Spring Boot 集成 Redis 中 TypedTuple 和 DefaultTypedTuple 的详细使用说明&#xff0c;包含代码示例和场景说明&#xff1a; 1. 什么是 TypedTuple 和 DefaultTypedTuple&#xff1f; TypedTuple<T> 接口&#xff1a; 定义了 Redis 中有序集合&#xff08;ZSet…

以下是 Spring Boot 集成 Redis 中 TypedTupleDefaultTypedTuple 的详细使用说明,包含代码示例和场景说明:


1. 什么是 TypedTuple 和 DefaultTypedTuple?

  • TypedTuple<T> 接口
    定义了 Redis 中有序集合(ZSet)的元素结构,包含 元素值(value)分数(score)

    • T 表示元素的类型(如 String、自定义对象等)。
  • DefaultTypedTuple<T>
    TypedTuple 的实现类,用于创建包含元素和分数的元组对象,常用于 ZSet 的增删改查操作


2. 使用场景

TypedTuple 主要用于以下场景:

  1. 存储带分数的元素(如排行榜、优先级队列)。
  2. 获取元素时同时获取分数(如查询用户积分及排名)。
  3. 批量操作 ZSet(如添加多个元素并指定分数)。

3. Spring Boot 配置

3.1 添加依赖

pom.xml 中添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId>
</dependency>
3.2 配置 RedisTemplate
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);// 设置键和值的序列化器template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}

4. TypedTuple 的核心操作

4.1 创建 TypedTuple 对象

通过 DefaultTypedTuple 构造函数创建:

TypedTuple<String> tuple = new DefaultTypedTuple<>("Alice", 90.0); // 元素值为 "Alice",分数为90.0
4.2 添加元素到 ZSet
// 添加单个元素
redisTemplate.opsForZSet().add("leaderboard", "Alice", 90.0);// 或使用 TypedTuple 批量添加
redisTemplate.opsForZSet().add("leaderboard", new DefaultTypedTuple<>("Alice", 90.0),new DefaultTypedTuple<>("Bob", 85.0));
4.3 获取元素和分数
// 获取所有元素及其分数(按分数升序)
Set<ZSetOperations.TypedTuple<String>> tuples = redisTemplate.opsForZSet().reverseRangeWithScores("leaderboard", 0, -1);for (TypedTuple<String> tuple : tuples) {String member = tuple.getValue(); // 元素值(如 "Alice")Double score = tuple.getScore(); // 分数(如 90.0)System.out.println("Member: " + member + ", Score: " + score);
}
4.4 更新元素分数
// 更新元素的分数
redisTemplate.opsForZSet().add("leaderboard", "Alice", 95.0); // 若已存在,分数会被更新
4.5 删除元素
// 删除指定元素
redisTemplate.opsForZSet().remove("leaderboard", "Alice");

5. 完整代码示例

5.1 服务类实现
@Service
public class RankService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 添加用户到排行榜public void addUserToLeaderboard(String userId, double score) {redisTemplate.opsForZSet().add("leaderboard", userId, score);}// 获取前10名用户及其分数public List<ScoredUser> getTop10() {Set<ZSetOperations.TypedTuple<String>> tuples = redisTemplate.opsForZSet().reverseRangeWithScores("leaderboard", 0, 9);List<ScoredUser> result = new ArrayList<>();for (TypedTuple<String> tuple : tuples) {ScoredUser user = new ScoredUser();user.setId(tuple.getValue());user.setScore(tuple.getScore());result.add(user);}return result;}// 自定义返回对象@Dataprivate static class ScoredUser {private String id;private Double score;}
}
5.2 使用示例
@Autowired
private RankService rankService;// 添加用户
rankService.addUserToLeaderboard("user1001", 90.0);
rankService.addUserToLeaderboard("user1002", 85.0);// 获取前10名
List<ScoredUser> top10 = rankService.getTop10();
for (ScoredUser user : top10) {System.out.println("ID: " + user.getId() + ", Score: " + user.getScore());
}

6. 关键代码说明

6.1 添加元素(带分数)
// 直接添加元素和分数
redisTemplate.opsForZSet().add(key, member, score);// 使用 TypedTuple 批量添加
redisTemplate.opsForZSet().add(key, new DefaultTypedTuple<>("Alice", 90.0),new DefaultTypedTuple<>("Bob", 85.0));
6.2 获取元素和分数
// 获取带分数的元素(按分数降序)
Set<ZSetOperations.TypedTuple<String>> tuples = redisTemplate.opsForZSet().reverseRangeWithScores(key, start, end);// 遍历获取每个元素和分数
for (TypedTuple<String> tuple : tuples) {String member = tuple.getValue();Double score = tuple.getScore();
}
6.3 更新元素分数
// 若元素已存在,会更新其分数
redisTemplate.opsForZSet().add(key, member, newScore);

7. 总结表格

操作方法描述
添加元素opsForZSet().add(key, member, score)添加元素并指定分数。
批量添加opsForZSet().add(key, tuples)使用 TypedTuple 列表批量添加元素。
获取元素和分数opsForZSet().reverseRangeWithScores(key, start, end)获取指定范围的元素及其分数(按分数降序)。
更新分数opsForZSet().add(key, member, newScore)若元素已存在,更新其分数。
删除元素opsForZSet().remove(key, member)删除指定元素。

8. 注意事项

  1. 泛型类型

    • TypedTuple<T> 的类型 T 必须与 ZSet 中的元素类型一致(如 String、自定义对象等)。
    • 若存储自定义对象,需确保序列化配置正确(如使用 GenericJackson2JsonRedisSerializer)。
  2. 分数范围查询

    • 使用 rangeByScoreWithScores(key, min, max) 可根据分数范围获取元素。
  3. 性能优化

    • 大量数据操作时,优先使用批量操作(如 add 接受 TypedTuple 列表)。

通过以上示例和说明,可以灵活使用 TypedTupleDefaultTypedTuple 实现 Redis ZSet 的复杂操作。

http://www.whsansanxincailiao.cn/news/31959858.html

相关文章:

  • 农业企业网站模板免费下载/seo优化教程视频
  • 哈尔滨服务好的建站/企业营销策划书模板
  • 怎么检测网站是否安全/kol推广
  • 怎么做消费一卡通网站/安徽网站推广
  • 建手机网站的软件有哪些/线上推广费用预算
  • 网站开发后台能用c语言吗/网络服务有限公司
  • 做建筑设计的网站推荐/百度网盟广告
  • 自适应h5网站模板/百度推广app下载
  • 政府建设网站费用/口碑最好的it培训机构
  • 男女做爰视频网站在线/有没有免费的seo网站
  • 的网站建设/竹子建站官网
  • 医疗美容医院网站建设/域名注册 万网
  • 搭建一个企业网站/夫唯seo培训
  • 做影集的网站或软件/百度付费推广的费用
  • 上海互联网公司/驻马店百度seo
  • 网站建设伍金手指下拉7/百度手机网页版
  • 如何免费建设网站com/seo的关键词无需
  • 网站开发时间进度表/深圳优化公司高粱seo较
  • 网站开发培训/百色seo关键词优化公司
  • 网站后台验证码不显示/百度指数批量获取
  • 广州网站建设系统/seo广告优化
  • 服务周到的做网站/可以推广网站
  • 烟台网站建设合肥公司/网址收录平台
  • 拍卖网站模板下载/竞价培训课程
  • 和一个网站做接口/如何申请百度竞价排名
  • 高端网站建设定制/兰州快速seo整站优化招商
  • 中山网络公司网站/地推团队接单平台
  • 苏州定制网站建设/seo建站优化推广
  • 河北网站建设推广电话/优化网站教程
  • 免费b站在线观看人数在哪儿找的/seo公司 杭州