java 分布式 redis缓存技术_Redis分布式缓存系列(五)

本文深入探讨了Redis中的ZSet(有序集合)类型,它结合了集合的去重特性与排序功能,通过分数(score)对元素进行排序。ZSet广泛应用于实时排行榜场景,例如游戏得分榜。文章列举了多个与ZSet操作相关的API,包括添加、获取元素及其分数、获取排名等,展示了如何利用Redis高效地解决此类问题。
摘要由CSDN通过智能技术生成

本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的ZSet类型,以及如何使用Redis解决实时排行榜问题。

本系列将和大家分享Redis分布式缓存,本章主要简单介绍下Redis中的ZSet类型,以及如何使用Redis解决实时排行榜问题。

Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。

ZSet类型最大的特点就是有序、去重,以及交集、并集的使用。

存储形式:key--SortList

25a7be68842f5348204ade6564ab5928.png

首先先给大家Show一波Redis中与ZSet类型相关的API:

using System.Collections.Generic;namespace TianYa.Redis.Service{ /// /// Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列 /// 1、带有权重的元素,比如一个游戏的用户得分排行榜 /// 2、比较复杂的数据结构,一般用到的场景不算太多 /// public class RedisZSetService : RedisBase { #region 添加 /// /// 添加setId/value,默认分数是从1.多*10的9次方以此递增的,自带自增效果 /// public bool AddItemToSortedSet(string setId, string value) { return base._redisClient.AddItemToSortedSet(setId, value); } /// /// 添加setId/value,并设置value的分数 /// public bool AddItemToSortedSet(string setId, string value, double score) { return base._redisClient.AddItemToSortedSet(setId, value, score); } /// /// 为setId添加values集合,values集合中每个value的分数设置为score /// public bool AddRangeToSortedSet(string setId, List values, double score) { return base._redisClient.AddRangeToSortedSet(setId, values, score); } /// /// 为setId添加values集合,values集合中每个value的分数设置为score /// public bool AddRangeToSortedSet(string setId, List values, long score) { return base._redisClient.AddRangeToSortedSet(setId, values, score); } #endregion 添加 #region 获取 /// /// 获取setId的所有集合 /// public List GetAllItemsFromSortedSet(string setId) { return base._redisClient.GetAllItemsFromSortedSet(setId); } /// /// 获取setId的所有集合,倒叙输出 /// public List GetAllItemsFromSortedSetDesc(string setId) { return base._redisClient.GetAllItemsFromSortedSetDesc(setId); } /// /// 获取集合,带分数 /// public IDictionary GetAllWithScoresFromSortedSet(string setId) { return base._redisClient.GetAllWithScoresFromSortedSet(setId); } /// /// 获取setId集合中值为value的下标值 /// public long GetItemIndexInSortedSet(string setId, string value) { return base._redisClient.GetItemIndexInSortedSet(setId, value); } /// /// 倒叙排列获取setId集合中值为value的下标值 /// public long GetItemIndexInSortedSetDesc(string setId, string value) { return base._redisClient.GetItemIndexInSortedSetDesc(setId, value); } /// /// 获取setId集合中值为value的分数 /// public double GetItemScoreInSortedSet(string setId, string value) { return base._redisClient.GetItemScoreInSortedSet(setId, value); } /// /// 获取setId集合中所有数据的总数 /// public long GetSortedSetCount(string setId) { return base._redisClient.GetSortedSetCount(setId); } /// /// setId集合数据从分数为fromScore到分数为toScore的数据总数 /// public long GetSortedSetCount(string setId, double fromScore, double toScore) { return base._redisClient.GetSortedSetCount(setId, fromScore, toScore); } /// /// 获取setId集合从高分到低分排序数据,分数从fromScore到分数为toScore的数据 /// public List GetRangeFromSortedSetByHighestScore(string setId, double fromScore, double toScore) { return base._redisClient.GetRangeFromSortedSetByHighestScore(setId, fromScore, toScore); } /// /// 获取setId集合从低分到高分排序数据,分数从fromScore到分数为toScore的数据 /// public List GetRangeFromSortedSetByLowestScore(string setId, double fromScore, double toScore) { return base._redisClient.GetRangeFromSortedSetByLowestScore(setId, fromScore, toScore); } /// /// 获取setId集合从高分到低分排序数据,分数从fromScore到分数为toScore的数据,带分数 /// public IDictionary GetRangeWithScoresFromSortedSetByHighestScore(string setId, double fromScore, double toScore) { return base._redisClient.GetRangeWithScoresFromSortedSetByHighestScore(setId, fromScore, toScore); } /// /// 获取setId集合从低分到高分排序数据,分数从fromScore到分数为toScore的数据,带分数 /// public IDictionary GetRangeWithScoresFromSortedSetByLowestScore(string setId, double fromScore, double toScore) { return base._redisClient.GetRangeWithScoresFromSortedSetByLowestScore(setId, fromScore, toScore); } /// /// 获取setId集合数据,下标从fromRank到下标为toRank的数据 /// public List GetRangeFromSortedSet(string setId, int fromRank, int toRank) { return base._redisClient.GetRangeFromSortedSet(setId, fromRank, toRank); } /// /// 获取setId集合倒叙排列数据,下标从fromRank到下标为toRank的数据 /// public List GetRangeFromSortedSetDesc(string setId, int fromRank, int toRank) { return base._redisClient.GetRangeFromSortedSetDesc(setId, fromRank, toRank); } /// /// 获取setId集合数据,下标从fromRank到下标为toRank的数据,带分数 /// public IDictionary GetRangeWithScoresFromSortedSet(string setId, int fromRank, int toRank) { return base._redisClient.GetRangeWithScoresFromSortedSet(setId, fromRank, toRank); } /// /// 获取setId集合倒叙排列数据,下标从fromRank到下标为toRank的数据,带分数 /// public IDictionary GetRangeWithScoresFromSort.........

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值