From 17e5dbd7bd0364e27a33f1a7dab91cf33d5dcabc Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 04 三月 2026 11:52:12 +0800
Subject: [PATCH] 增强Redis缓存服务与设备通信优化
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/ICacheService.cs | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 153 insertions(+), 0 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/ICacheService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/ICacheService.cs
index d733532..85ef381 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/ICacheService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Core/Caches/ICacheService.cs
@@ -45,6 +45,52 @@
/// <returns></returns>
void Remove(IEnumerable<string> keys);
+ #region 鍒犻櫎鎵╁睍鏂规硶
+
+ /// <summary>
+ /// 鍒犻櫎骞惰幏鍙栧�硷細鍒犻櫎鎸囧畾Key骞惰繑鍥炲叾鍊�
+ /// </summary>
+ /// <param name="key">缂撳瓨Key</param>
+ /// <returns>琚垹闄ょ殑鍊硷紝涓嶅瓨鍦ㄨ繑鍥瀗ull</returns>
+ string? RemoveAndGet(string key);
+
+ /// <summary>
+ /// 鍒犻櫎骞惰幏鍙栧璞★細鍒犻櫎鎸囧畾Key骞惰繑鍥炲叾瀵硅薄鍊�
+ /// </summary>
+ /// <param name="key">缂撳瓨Key</param>
+ /// <returns>琚垹闄ょ殑瀵硅薄锛屼笉瀛樺湪杩斿洖null</returns>
+ T? RemoveAndGet<T>(string key) where T : class;
+
+ /// <summary>
+ /// 鎸夊墠缂�鍒犻櫎锛氬垹闄ゆ墍鏈変互鎸囧畾鍓嶇紑寮�澶寸殑Key
+ /// </summary>
+ /// <param name="prefix">Key鍓嶇紑</param>
+ /// <returns>鍒犻櫎鐨勬暟閲�</returns>
+ int RemoveByPrefix(string prefix);
+
+ /// <summary>
+ /// 鎸夋ā寮忓垹闄わ細鍒犻櫎鍖归厤鎸囧畾妯″紡鐨勬墍鏈塊ey锛堟敮鎸�*閫氶厤绗︼級
+ /// </summary>
+ /// <param name="pattern">鍖归厤妯″紡锛屽 "user:*", "session:123:*"</param>
+ /// <returns>鍒犻櫎鐨勬暟閲�</returns>
+ int RemoveByPattern(string pattern);
+
+ /// <summary>
+ /// 鎵归噺鍒犻櫎骞惰繑鍥炴垚鍔熸暟閲�
+ /// </summary>
+ /// <param name="keys">缂撳瓨Key闆嗗悎</param>
+ /// <returns>鎴愬姛鍒犻櫎鐨勬暟閲�</returns>
+ int RemoveAll(IEnumerable<string> keys);
+
+ /// <summary>
+ /// 鏉′欢鍒犻櫎锛氬垹闄ゆ弧瓒虫寚瀹氭潯浠剁殑鎵�鏈塊ey
+ /// </summary>
+ /// <param name="predicate">鏉′欢璋撹瘝</param>
+ /// <returns>鍒犻櫎鐨勬暟閲�</returns>
+ int RemoveWhere(Func<string, bool> predicate);
+
+ #endregion
+
/// <summary>
/// 鑾峰彇缂撳瓨
/// </summary>
@@ -60,6 +106,95 @@
/// <param name="key">缂撳瓨Key</param>
/// <returns></returns>
string? Get(string key);
+
+ #region 娣诲姞鍜屼慨鏀规墿灞曟柟娉�
+
+ /// <summary>
+ /// 鎵归噺娣诲姞缂撳瓨
+ /// </summary>
+ void AddAll(IDictionary<string, string> items, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鎵归噺娣诲姞瀵硅薄缂撳瓨
+ /// </summary>
+ void AddAllObjects(IDictionary<string, object> items, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鏇挎崲锛氫粎褰揔ey瀛樺湪鏃舵浛鎹㈠叾鍊�
+ /// </summary>
+ bool Replace(string key, string newValue, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鏇挎崲瀵硅薄锛氫粎褰揔ey瀛樺湪鏃舵浛鎹㈠叾鍊�
+ /// </summary>
+ bool Replace<T>(string key, T newValue, int expireSeconds = -1) where T : class;
+
+ /// <summary>
+ /// 鑾峰彇骞跺埛鏂帮細鑾峰彇鍊煎苟鍒锋柊鍏惰繃鏈熸椂闂�
+ /// </summary>
+ string? GetAndRefresh(string key, int expireSeconds);
+
+ /// <summary>
+ /// 鑾峰彇骞跺埛鏂板璞★細鑾峰彇瀵硅薄骞跺埛鏂板叾杩囨湡鏃堕棿
+ /// </summary>
+ T? GetAndRefresh<T>(string key, int expireSeconds) where T : class;
+
+ /// <summary>
+ /// 鍒锋柊杩囨湡鏃堕棿锛氭洿鏂版寚瀹欿ey鐨勮繃鏈熸椂闂�
+ /// </summary>
+ bool RefreshExpire(string key, int expireSeconds);
+
+ /// <summary>
+ /// 璁剧疆杩囨湡鏃堕棿锛氬湪鎸囧畾绉掓暟鍚庤繃鏈�
+ /// </summary>
+ bool ExpireIn(string key, int seconds);
+
+ /// <summary>
+ /// 璁剧疆杩囨湡鏃堕棿锛氬湪鎸囧畾鏃堕棿鐐硅繃鏈�
+ /// </summary>
+ bool ExpireAt(string key, DateTime expireTime);
+
+ /// <summary>
+ /// 鑾峰彇鍓╀綑杩囨湡鏃堕棿锛堢锛�
+ /// </summary>
+ long? GetExpire(string key);
+
+ /// <summary>
+ /// 鍘熷瓙鎿嶄綔锛氫粎褰揔ey涓嶅瓨鍦ㄦ椂娣诲姞锛堝師瀛愭搷浣滐級
+ /// </summary>
+ bool AddIfNotExists(string key, string value, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鍘熷瓙鎿嶄綔锛氫粎褰揔ey涓嶅瓨鍦ㄦ椂娣诲姞瀵硅薄锛堝師瀛愭搷浣滐級
+ /// </summary>
+ bool AddIfNotExists<T>(string key, T value, int expireSeconds = -1) where T : class;
+
+ /// <summary>
+ /// 鍘熷瓙鎿嶄綔锛氳幏鍙栨棫鍊煎苟璁剧疆鏂板��
+ /// </summary>
+ string? GetAndSet(string key, string newValue, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鍘熷瓙鎿嶄綔锛氳幏鍙栨棫瀵硅薄骞惰缃柊瀵硅薄
+ /// </summary>
+ T? GetAndSet<T>(string key, T newValue, int expireSeconds = -1) where T : class;
+
+ /// <summary>
+ /// 鑷锛氬皢Key涓殑鏁板�艰嚜澧烇紝杩斿洖鑷鍚庣殑鍊�
+ /// </summary>
+ long Increment(string key, long value = 1);
+
+ /// <summary>
+ /// 鑷噺锛氬皢Key涓殑鏁板�艰嚜鍑忥紝杩斿洖鑷噺鍚庣殑鍊�
+ /// </summary>
+ long Decrement(string key, long value = 1);
+
+ /// <summary>
+ /// 杩藉姞锛氬悜鐜版湁鍊艰拷鍔犲唴瀹�
+ /// </summary>
+ long Append(string key, string value);
+
+ #endregion
#region ConcurrentDictionary椋庢牸鏂规硶
@@ -94,6 +229,24 @@
bool TryUpdate(string key, string newValue, int expireSeconds = -1);
/// <summary>
+ /// 鍊煎彂鐢熸敼鍙樻椂鏇存柊锛氫粎褰揔ey瀛樺湪涓旀柊鍊间笌鏃у�间笉鍚屾椂鎵嶆洿鏂�
+ /// </summary>
+ /// <param name="key">缂撳瓨Key</param>
+ /// <param name="newValue">鏂板��</param>
+ /// <param name="expireSeconds">杩囨湡鏃堕棿锛堢锛�</param>
+ /// <returns>鍊兼槸鍚﹀彂鐢熶簡鏀瑰彉骞舵洿鏂版垚鍔�</returns>
+ bool TryUpdateIfChanged(string key, string newValue, int expireSeconds = -1);
+
+ /// <summary>
+ /// 鍊煎彂鐢熸敼鍙樻椂鏇存柊瀵硅薄锛氫粎褰揔ey瀛樺湪涓旀柊鍊间笌鏃у�间笉鍚屾椂鎵嶆洿鏂�
+ /// </summary>
+ /// <param name="key">缂撳瓨Key</param>
+ /// <param name="newValue">鏂板��</param>
+ /// <param name="expireSeconds">杩囨湡鏃堕棿锛堢锛�</param>
+ /// <returns>鍊兼槸鍚﹀彂鐢熶簡鏀瑰彉骞舵洿鏂版垚鍔�</returns>
+ bool TryUpdateIfChanged<T>(string key, T newValue, int expireSeconds = -1) where T : class;
+
+ /// <summary>
/// 鑾峰彇鎴栨坊鍔狅細Key瀛樺湪鍒欒繑鍥炵幇鏈夊�硷紝涓嶅瓨鍦ㄥ垯娣诲姞骞惰繑鍥炴柊鍊�
/// </summary>
string GetOrAdd(string key, string value, int expireSeconds = -1);
--
Gitblit v1.9.3