179 lines
7.5 KiB
C#
179 lines
7.5 KiB
C#
using JiShe.CollectBus.Common.Models;
|
||
using JiShe.CollectBus.IotSystems.Ammeters;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace JiShe.CollectBus.Application.Contracts
|
||
{
|
||
/// <summary>
|
||
/// 数据缓存服务接口
|
||
/// </summary>
|
||
public interface IRedisDataCacheService
|
||
{
|
||
/// <summary>
|
||
/// 单个添加数据
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisSetIndexCacheKey">Set索引缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="data">待缓存数据</param>
|
||
/// <returns></returns>
|
||
Task InsertDataAsync<T>(
|
||
string redisHashCacheKey,
|
||
string redisSetIndexCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
T data) where T : DeviceCacheBasicModel;
|
||
|
||
|
||
/// <summary>
|
||
/// 批量添加数据
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisSetIndexCacheKey">Set索引缓存Key</param>
|
||
/// <param name="redisDeviceInfoHashCacheKey">hash缓存Key</param>
|
||
/// <param name="items">待缓存数据集合</param>
|
||
/// <returns></returns>
|
||
Task BatchInsertDataAsync<T>(
|
||
string redisSetIndexCacheKey,
|
||
string redisDeviceInfoHashCacheKey,
|
||
Dictionary<string, List<T>> items) where T : DeviceCacheBasicModel;
|
||
|
||
|
||
/// <summary>
|
||
/// 删除缓存信息
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisSetIndexCacheKey">Set索引缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="data">已缓存数据</param>
|
||
/// <returns></returns>
|
||
Task RemoveCacheDataAsync<T>(
|
||
string redisHashCacheKey,
|
||
string redisSetIndexCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
T data) where T : DeviceCacheBasicModel;
|
||
|
||
/// <summary>
|
||
/// 修改缓存信息,映射关系未发生改变
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisSetIndexCacheKey">Set索引缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="newData">待修改缓存数据</param>
|
||
/// <returns></returns>
|
||
Task ModifyDataAsync<T>(
|
||
string redisHashCacheKey,
|
||
string redisSetIndexCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
T newData) where T : DeviceCacheBasicModel;
|
||
|
||
|
||
/// <summary>
|
||
/// 修改缓存信息,映射关系已改变
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisSetIndexCacheKey">Set索引缓存Key</param>
|
||
/// <param name="oldMemberId">旧的映射关系</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="newData">待修改缓存数据</param>
|
||
/// <returns></returns>
|
||
Task ModifyDataAsync<T>(
|
||
string redisHashCacheKey,
|
||
string redisSetIndexCacheKey,
|
||
string oldMemberId,
|
||
string redisZSetScoresIndexCacheKey,
|
||
T newData) where T : DeviceCacheBasicModel;
|
||
|
||
/// <summary>
|
||
/// 通过集中器与表计信息排序索引获取数据
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="pageSize">分页尺寸</param>
|
||
/// <param name="lastScore">最后一个索引</param>
|
||
/// <param name="lastMember">最后一个唯一标识</param>
|
||
/// <param name="descending">排序方式</param>
|
||
/// <returns></returns>
|
||
Task<BusCacheGlobalPagedResult<T>> GetPagedData<T>(
|
||
string redisHashCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
IEnumerable<int> focusIds,
|
||
int pageSize = 10,
|
||
decimal? lastScore = null,
|
||
string lastMember = null,
|
||
bool descending = true)
|
||
where T : DeviceCacheBasicModel;
|
||
|
||
/// <summary>
|
||
/// 通过集中器与表计信息排序索引获取数据
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="scoreValueRawData">ZSET索引的原始数据,例如集中地址和点位的组合</param>
|
||
/// <param name="pageSize">分页尺寸</param>
|
||
/// <param name="lastScore">最后一个索引</param>
|
||
/// <param name="lastMember">最后一个唯一标识</param>
|
||
/// <param name="descending">排序方式</param>
|
||
/// <returns></returns>
|
||
Task<BusCacheGlobalPagedResult<T>> GetSingleData<T>(
|
||
string redisHashCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
string scoreValueRawData,
|
||
int pageSize = 10,
|
||
decimal? lastScore = null,
|
||
string lastMember = null,
|
||
bool descending = true)
|
||
where T : DeviceCacheBasicModel;
|
||
|
||
|
||
/// <summary>
|
||
/// 通过ZSET索引获取数据,支持10万级别数据处理,控制在13秒以内。
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisHashCacheKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="redisZSetScoresIndexCacheKey">ZSET索引缓存Key</param>
|
||
/// <param name="pageSize">分页尺寸</param>
|
||
/// <param name="lastScore">最后一个索引</param>
|
||
/// <param name="lastMember">最后一个唯一标识</param>
|
||
/// <param name="descending">排序方式</param>
|
||
/// <returns></returns>
|
||
Task<BusCacheGlobalPagedResult<T>> GetAllPagedData<T>(
|
||
string redisHashCacheKey,
|
||
string redisZSetScoresIndexCacheKey,
|
||
int pageSize = 1000,
|
||
decimal? lastScore = null,
|
||
string lastMember = null,
|
||
bool descending = true)
|
||
where T : DeviceCacheBasicModel;
|
||
|
||
/// <summary>
|
||
/// 通过ZSET索引获取数据,支持10万级别数据处理,控制在13秒以内。
|
||
/// </summary>
|
||
/// <typeparam name="T"></typeparam>
|
||
/// <param name="redisCacheDeviceGroupSetIndexKey">ZSET索引缓存Key</param>
|
||
/// <param name="redisCacheDeviceInfoHashKey">主数据存储Hash缓存Key</param>
|
||
/// <param name="pageSize">分页尺寸</param>
|
||
/// <param name="lastScore">最后一个索引</param>
|
||
/// <param name="lastMember">最后一个唯一标识</param>
|
||
/// <param name="descending">排序方式</param>
|
||
/// <returns></returns>
|
||
Task<BusCacheGlobalPagedResult<T>> GetAllPagedData2<T>(
|
||
string redisCacheDeviceGroupSetIndexKey,
|
||
string redisCacheDeviceInfoHashKey,
|
||
int pageSize = 1000,
|
||
decimal? lastScore = null,
|
||
string lastMember = null,
|
||
bool descending = true)
|
||
where T : DeviceCacheBasicModel;
|
||
}
|
||
}
|