You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

161 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.aurora.service;
import org.springframework.data.domain.Sort;// 导入 Spring Data 的排序类Sort用于指定查询结果的排序方向如升序、降序
import org.springframework.data.geo.Distance;// 导入距离类Distance用于表示地理空间计算中的距离结果通常包含数值和单位
import org.springframework.data.geo.GeoResults;// 导入地理空间查询结果类GeoResults用于封装地理空间查询的返回结果如附近地点列表
import org.springframework.data.geo.Point;// 导入点类Point用于表示地理空间中的坐标点经度、纬度
import org.springframework.data.redis.connection.RedisGeoCommands;// 导入 Redis 地理空间命令相关类RedisGeoCommands提供地理空间操作的支持如添加地点、计算距离
import java.util.List;// 导入 Java 集合框架中的 List 接口,用于存储有序的元素序列,常用于方法参数或返回列表结果
import java.util.Map;// 导入 Map 接口,用于存储键值对映射关系,常用于哈希结构操作
import java.util.Set;// 导入 Set 接口,用于存储不重复的元素集合,常用于集合结构操作
// 抑制编译器所有类型的警告信息,避免编译时产生警告提示,使代码更简洁
@SuppressWarnings("all")
// 定义 Redis 服务接口RedisService声明一系列 Redis 数据操作的方法
// 该接口封装了 Redis 的常用功能,包括字符串、哈希、列表、集合、有序集合、位操作、地理空间等数据类型的操作
public interface RedisService {
/**
* 保存键值对并设置过期时间(单位:秒),该方法将键值对存储到 Redis中并在指定时间后自动过期常用于临时数据或缓存场景
* @param key 键名,用于唯一标识数据
* @param value 值,可以是任意对象类型,通常通过序列化存储
* @param time 过期时间(秒),指定数据在 Redis 中的存活时间
*/
void set(String key, Object value, long time);
void set(String key, Object value);//保存键值对(除非手动删除,否则永不过期)
Object get(String key);//根据键名获取值(Object为值对象该方法从Redis中查询指定键对应的值如果键不存在则返回 null
Boolean del(String key);//删除指定键的数据,该方法从Redis中移除指定键及其关联值删除成功返回 true否则返回 false
Long del(List<String> keys);//批量删除多个键的数据,该方法一次性删除多个键值对,返回实际删除的键数量
Boolean expire(String key, long time);//设置键的过期时间,该方法为已存在的键设置生存时间,超过指定时间后键自动失效
Long getExpire(String key);//获取键的剩余生存时间(单位:秒),该方法查询键的剩余存活时间,返回秒数;如果键不存在或永不过期,返回特定值
Boolean hasKey(String key);//判断键是否存在,该方法检查Redis是否存在指定的键常用于验证数据是否已缓存
//返回自增后的新值
Long incr(String key, long delta);//对键的值进行自增操作(整数),该方法将键对应的整数值增加指定步长,常用于计数器、限流等场景
//返回自增后的新值
Long incrExpire(String key, long time);//自增并设置过期时间,该方法在自增操作的同时重置键的过期时间,确保计数器在指定时间内有效
//返回自减后的新值
Long decr(String key, long delta);//对键的值进行自减操作(整数),该方法将键对应的整数值减少指定步长,常用于计数器、限流等场景
/**
* 获取哈希结构中指定字段的值该方法从Redis哈希类型数据中获取特定字段的值适用于对象属性存储
* @param key 哈希键名 @param hashKey 哈希字段名 @return 字段值,如果字段不存在返回 null
*/
Object hGet(String key, String hashKey);
//向哈希结构中设置字段值并设置过期时间,该方法在哈希中设置字段值,并为整个哈希键设置统一的过期时间
Boolean hSet(String key, String hashKey, Object value, long time);
//向哈希结构中设置字段值(永不过期),该方法仅设哈希字段值,不修改键的过期时间
void hSet(String key, String hashKey, Object value);
/**
* 获取整个哈希结构的所有字段和值,该方法返回哈希键对应的全部字段-值映射,适用于获取完整对象数据
* @param key 哈希键名 @return 字段-值映射表Map 对象)
*/
Map<String, Object> hGetAll(String key);
//批量设置哈希结构的字段值并设置过期时间,该方法使用 Map 批量设置哈希字段,同时设置整个键的过期时间
Boolean hSetAll(String key, Map<String, Object> map, long time);
//批量设置哈希结构的字段值(永不过期),该方法批量设置哈希字段,不修改键的过期时间
void hSetAll(String key, Map<String, ?> map);
/**
* 删除哈希结构中的指定字段,该方法从哈希中移除一个或多个字段,不影响其他字段
* @param key 哈希键名 @param hashKey 要删除的字段名(可变参数,可多个)
*/
void hDel(String key, Object... hashKey);
/**
* 判断哈希结构中是否存在指定字段,该方法检查哈希中是否包含特定字段,用于验证字段存在性
* @param key 哈希键名 @param hashKey 字段名 @return 是否存在true存在false不存在
*/
Boolean hHasKey(String key, String hashKey);
//返回自增后的新值
Long hIncr(String key, String hashKey, Long delta);//对哈希结构中指定字段的值进行自增操作(整数),该方法增加哈希中某个字段的整数值,适用于对象属性的计数场景
//返回自减后的新值
Long hDecr(String key, String hashKey, Long delta);//对哈希结构中指定字段的值进行自减操作(整数),该方法增加哈希中某个字段的整数值,适用于对象属性的计数场景
//返回增加后的新分数
Double zIncr(String key, Object value, Double score);//增加有序集合中成员的分数,该方法为有序集合中指定成员增加分数,适用于排行榜、优先级队列等场景
//返回减少后的新分数
Double zDecr(String key, Object value, Double score);//减少有序集合中成员的分数,该方法为有序集合中指定成员减少分数,适用于排行榜、优先级队列等场景
//获取有序集合中指定排名范围的成员及分数(按分数从高到低),该方法返回有序集合中从高到低排序的成员及其分数,适用于 TopN 查询
Map<Object, Double> zReverseRangeWithScore(String key, long start, long end);
//返回分数值,如果成员不存在返回 null
Double zScore(String key, Object value);//获取有序集合中指定成员的分数,该方法查询特定成员在有序集合中的分数值
Map<Object, Double> zAllScore(String key);//获取有序集合中所有成员的分数,该方法返回有序集合中全部成员的分数映射,适用于数据导出或分析
Set<Object> sMembers(String key);//获取集合中的所有成员,该方法返回集合键对应的全部成员集合,适用于获取不重复的元素列表
//返回实际被添加的新成员数量(重复成员不计数)
Long sAdd(String key, Object... values);//向集合中添加一个或多个成员,该方法向集合中插入新成员,重复成员会被自动忽略
//返回实际被添加的新成员数量
Long sAddExpire(String key, long time, Object... values);//向集合中添加成员并设置过期时间,该方法添加成员的同时为整个集合键设置过期时间
Boolean sIsMember(String key, Object value);//判断指定成员是否在集合中,该方法检查成员是否属于集合,用于验证元素存在性
//返回成员数量 @param key 集合键名
Long sSize(String key);//获取集合的成员数量,该方法返回集合中元素的总数,即集合的基数
//返回实际被移除的成员数量
Long sRemove(String key, Object... values);//从集合中移除一个或多个成员,该方法从集合中删除指定成员,不存在则忽略
//返回元素列表
List<Object> lRange(String key, long start, long end);//获取列表中指定范围的元素,该方法返回列表键中从start到end索引的元素子集包含两端
Long lSize(String key);//获取列表的长度,该方法返回列表中元素的总数 @param key 列表键名
//@return 索引处的元素值
Object lIndex(String key, long index);//根据索引获取列表中的元素,该方法返回列表中指定索引位置的元素,支持负数索引(-1 表示最后一个)
//@return 插入后列表的长度
Long lPush(String key, Object value);//向列表尾部插入一个元素,该方法在列表的右端(尾部)添加新元素,适用于队列或日志追加场景
//@return 插入后列表的长度
Long lPush(String key, Object value, long time);//向列表尾部插入一个元素并设置过期时间,该方法插入元素的同时重置列表键的过期时间
//@return 插入后列表的长度
Long lPushAll(String key, Object... values);//向列表尾部批量插入多个元素,该方法一次性在列表尾部插入多个元素,元素顺序与参数顺序一致
//@return 插入后列表的长度
Long lPushAll(String key, Long time, Object... values);//向列表尾部批量插入多个元素并设置过期时间,该方法批量插入元素的同时设置列表键的过期时间
//返回实际移除数量 @param count 移除数量正数从头部开始搜索负数从尾部开始搜索0全部移除
Long lRemove(String key, long count, Object value);//从列表中移除指定数量的匹配元素,该方法删除列表中前count个与value相等的元素
/**
* 设置位图中指定偏移量的比特值,该方法操作位图Bitmap数据将指定偏移量的比特设置为 1 或 0适用于布隆过滤器、状态记录等场景
* @param key 位图键名 @param offset 比特偏移量 @param b 比特值true1false0
* @return 设置是否成功
*/
Boolean bitAdd(String key, int offset, boolean b);
Boolean bitGet(String key, int offset);//获取位图中指定偏移量的比特值,该方法查询位图中特定偏移量的比特状态
Long bitCount(String key);//统计位图中被设置为 1 的比特数量,该方法计算位图中所有值为 1 的比特总数,用于人口统计等
@param key
//@param limit:要提取的比特数量 @param offset:起始偏移量 @param key:位图键名 @return 比特字段整数值列表
List<Long> bitField(String key, int limit, int offset);//获取位图中指定范围的比特字段值,该方法提取位图中从指定偏移量开始的多个连续比特,返回其整数值列表
//@return 位图的字节数组表示
byte[] bitGetAll(String key);//获取整个位图的原始字节数据,该方法返回位图的完整字节数组,适用于底层数据处理或自定义解析
Long hyperAdd(String key, Object... value);//向HyperLogLog中添加元素,该方法用于基数统计向HyperLogLog结构中添加元素用于估算不重复元素数量
Long hyperGet(String... key);//合并多个HyperLogLog并返回估算的基数,该方法将多个HyperLogLog结构合并并返回估算的唯一元素总数
void hyperDel(String key);//删除HyperLogLog结构,该方法移除指定的HyperLogLog键
/**
* 向地理空间索引中添加一个地点,该方法将地点名称及其经纬度坐标添加到地理空间索引中,用于附近地点查询
* @param key:地理空间键名 @param x:经度坐标 @param y:纬度坐标 @param name:地点名称标识
* @return 添加成功的元素数量1成功0失败
*/
Long geoAdd(String key, Double x, Double y, String name);
// @return 坐标点列表,每个元素是对应地点的 Point 对象
List<Point> geoGetPointList(String key, Object... place);//获取指定地点的经纬度坐标列表,该方法查询一个或多个地点的坐标信息返回Point对象列表
/**
* 计算两个地点之间的地理空间距离,该方法根据经纬度计算两个地点间的实际距离,返回包含数值和单位的 Distance 对象
* @param key:地理空间键名 @param placeOne:第一个地点名称 @param placeTow:第二个地点名称
* @return 距离对象Distance包含距离值和单位如米、千米
*/
Distance geoCalculationDistance(String key, String placeOne, String placeTow);
/**
* 查询指定地点附近的其他地点,该方法以指定地点为中心,查找距离范围内的其他地点,支持排序和数量限制
* @param key:地理空间键名 @param place:中心地点名称 @param distance:查询距离范围 @param limit:返回结果数量限制
* @param sort:排序方向ASC由近到远DESC由远到近
* @return 地理空间查询结果GeoResults包含附近地点列表及其距离信息
*/
GeoResults<RedisGeoCommands.GeoLocation<Object>> geoNearByPlace(String key, String place, Distance distance, long limit, Sort.Direction sort);
List<String> geoGetHash(String key, String... place);//获取地点的Geohash字符串表示,该方法返回一个或多个地点的 Geohash 值Geohash是一种用于表示地理位置的编码字符串
}