飞星
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

654 行
22 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. namespace Permission.Redis
  5. {
  6. public interface IRedisService
  7. {
  8. #region String 操作
  9. /// <summary>
  10. /// 设置 key 并保存字符串(如果 key 已存在,则覆盖值)
  11. /// </summary>
  12. /// <param name="redisKey"></param>
  13. /// <param name="redisValue"></param>
  14. /// <param name="expiry"></param>
  15. /// <returns></returns>
  16. bool StringSet(string redisKey, string redisValue, TimeSpan? expiry = null);
  17. /// <summary>
  18. /// 保存多个 Key-value
  19. /// </summary>
  20. /// <param name="keyValuePairs"></param>
  21. /// <returns></returns>
  22. bool StringSet(IEnumerable<KeyValuePair<string, string>> keyValuePairs);
  23. /// <summary>
  24. /// 获取字符串
  25. /// </summary>
  26. /// <param name="redisKey"></param>
  27. /// <param name="expiry"></param>
  28. /// <returns></returns>
  29. string StringGet(string redisKey, TimeSpan? expiry = null);
  30. /// <summary>
  31. /// 存储一个对象(该对象会被序列化保存)
  32. /// </summary>
  33. /// <param name="redisKey"></param>
  34. /// <param name="redisValue"></param>
  35. /// <param name="expiry"></param>
  36. /// <returns></returns>
  37. bool StringSet<T>(string redisKey, T redisValue, TimeSpan? expiry = null);
  38. /// <summary>
  39. /// 获取一个对象(会进行反序列化)
  40. /// </summary>
  41. /// <param name="redisKey"></param>
  42. /// <param name="expiry"></param>
  43. /// <returns></returns>
  44. T StringGet<T>(string redisKey, TimeSpan? expiry = null);
  45. #region String 异步操作
  46. /// <summary>
  47. /// 保存一个字符串值
  48. /// </summary>
  49. /// <param name="redisKey"></param>
  50. /// <param name="redisValue"></param>
  51. /// <param name="expiry"></param>
  52. /// <returns></returns>
  53. Task<bool> StringSetAsync(string redisKey, string redisValue, TimeSpan? expiry = null);
  54. /// <summary>
  55. /// 保存一组字符串值
  56. /// </summary>
  57. /// <param name="keyValuePairs"></param>
  58. /// <returns></returns>
  59. Task<bool> StringSetAsync(IEnumerable<KeyValuePair<string, string>> keyValuePairs);
  60. /// <summary>
  61. /// 获取单个值
  62. /// </summary>
  63. /// <param name="redisKey"></param>
  64. /// <param name="redisValue"></param>
  65. /// <param name="expiry"></param>
  66. /// <returns></returns>
  67. Task<string> StringGetAsync(string redisKey, string redisValue, TimeSpan? expiry = null);
  68. /// <summary>
  69. /// 存储一个对象(该对象会被序列化保存)
  70. /// </summary>
  71. /// <param name="redisKey"></param>
  72. /// <param name="redisValue"></param>
  73. /// <param name="expiry"></param>
  74. /// <returns></returns>
  75. Task<bool> StringSetAsync<T>(string redisKey, T redisValue, TimeSpan? expiry = null);
  76. /// <summary>
  77. /// 获取一个对象(会进行反序列化)
  78. /// </summary>
  79. /// <param name="redisKey"></param>
  80. /// <param name="expiry"></param>
  81. /// <returns></returns>
  82. Task<T> StringGetAsync<T>(string redisKey, TimeSpan? expiry = null);
  83. #endregion async
  84. #endregion
  85. #region Hash 操作
  86. /// <summary>
  87. /// 判断该字段是否存在 hash 中
  88. /// </summary>
  89. /// <param name="redisKey"></param>
  90. /// <param name="hashField"></param>
  91. /// <returns></returns>
  92. bool HashExists(string redisKey, string hashField);
  93. /// <summary>
  94. /// 从 hash 中移除指定字段
  95. /// </summary>
  96. /// <param name="redisKey"></param>
  97. /// <param name="hashField"></param>
  98. /// <returns></returns>
  99. bool HashDelete(string redisKey, string hashField);
  100. /// <summary>
  101. /// 从 hash 中移除指定字段
  102. /// </summary>
  103. /// <param name="redisKey"></param>
  104. /// <param name="hashFields"></param>
  105. /// <returns></returns>
  106. long HashDelete(string redisKey, IEnumerable<string> hashFields);
  107. /// <summary>
  108. /// 在 hash 设定值
  109. /// </summary>
  110. /// <param name="redisKey"></param>
  111. /// <param name="hashField"></param>
  112. /// <param name="value"></param>
  113. /// <returns></returns>
  114. bool HashSet(string redisKey, string hashField, string value);
  115. /// <summary>
  116. /// 在 hash 中设定值
  117. /// </summary>
  118. /// <param name="redisKey"></param>
  119. /// <param name="hashFields"></param>
  120. void HashSet(string redisKey, IEnumerable<KeyValuePair<string, string>> hashFields);
  121. /// <summary>
  122. /// 在 hash 中获取值
  123. /// </summary>
  124. /// <param name="redisKey"></param>
  125. /// <param name="hashField"></param>
  126. /// <returns></returns>
  127. string HashGet(string redisKey, string hashField);
  128. /// <summary>
  129. /// 在 hash 中获取值
  130. /// </summary>
  131. /// <param name="redisKey"></param>
  132. /// <param name="hashFields"></param>
  133. /// <returns></returns>
  134. IEnumerable<string> HashGet(string redisKey, IEnumerable<string> hashFields);
  135. /// <summary>
  136. /// 从 hash 返回所有的字段值
  137. /// </summary>
  138. /// <param name="redisKey"></param>
  139. /// <returns></returns>
  140. IEnumerable<string> HashKeys(string redisKey);
  141. /// <summary>
  142. /// 返回 hash 中的所有值
  143. /// </summary>
  144. /// <param name="redisKey"></param>
  145. /// <returns></returns>
  146. IEnumerable<string> HashValues(string redisKey);
  147. /// <summary>
  148. /// 在 hash 设定值(序列化)
  149. /// </summary>
  150. /// <param name="redisKey"></param>
  151. /// <param name="hashField"></param>
  152. /// <param name="redisValue"></param>
  153. /// <returns></returns>
  154. bool HashSet<T>(string redisKey, string hashField, T redisValue);
  155. /// <summary>
  156. /// 在 hash 中获取值(反序列化)
  157. /// </summary>
  158. /// <param name="redisKey"></param>
  159. /// <param name="hashField"></param>
  160. /// <returns></returns>
  161. T HashGet<T>(string redisKey, string hashField);
  162. #region Hash 异步操作
  163. /// <summary>
  164. /// 判断该字段是否存在 hash 中
  165. /// </summary>
  166. /// <param name="redisKey"></param>
  167. /// <param name="hashField"></param>
  168. /// <returns></returns>
  169. Task<bool> HashExistsAsync(string redisKey, string hashField);
  170. /// <summary>
  171. /// 从 hash 中移除指定字段
  172. /// </summary>
  173. /// <param name="redisKey"></param>
  174. /// <param name="hashField"></param>
  175. /// <returns></returns>
  176. Task<bool> HashDeleteAsync(string redisKey, string hashField);
  177. /// <summary>
  178. /// 从 hash 中移除指定字段
  179. /// </summary>
  180. /// <param name="redisKey"></param>
  181. /// <param name="hashFields"></param>
  182. /// <returns></returns>
  183. Task<long> HashDeleteAsync(string redisKey, IEnumerable<string> hashFields);
  184. /// <summary>
  185. /// 在 hash 设定值
  186. /// </summary>
  187. /// <param name="redisKey"></param>
  188. /// <param name="hashField"></param>
  189. /// <param name="value"></param>
  190. /// <returns></returns>
  191. Task<bool> HashSetAsync(string redisKey, string hashField, string value);
  192. /// <summary>
  193. /// 在 hash 中设定值
  194. /// </summary>
  195. /// <param name="redisKey"></param>
  196. /// <param name="hashFields"></param>
  197. Task HashSetAsync(string redisKey, IEnumerable<KeyValuePair<string, string>> hashFields);
  198. /// <summary>
  199. /// 在 hash 中获取值
  200. /// </summary>
  201. /// <param name="redisKey"></param>
  202. /// <param name="hashField"></param>
  203. /// <returns></returns>
  204. Task<string> HashGetAsync(string redisKey, string hashField);
  205. /// <summary>
  206. /// 在 hash 中获取值
  207. /// </summary>
  208. /// <param name="redisKey"></param>
  209. /// <param name="hashFields"></param>
  210. /// <param name="value"></param>
  211. /// <returns></returns>
  212. Task<IEnumerable<string>> HashGetAsync(string redisKey, IEnumerable<string> hashFields,
  213. string value);
  214. /// <summary>
  215. /// 从 hash 返回所有的字段值
  216. /// </summary>
  217. /// <param name="redisKey"></param>
  218. /// <returns></returns>
  219. Task<IEnumerable<string>> HashKeysAsync(string redisKey);
  220. /// <summary>
  221. /// 返回 hash 中的所有值
  222. /// </summary>
  223. /// <param name="redisKey"></param>
  224. /// <returns></returns>
  225. Task<IEnumerable<string>> HashValuesAsync(string redisKey);
  226. /// <summary>
  227. /// 在 hash 设定值(序列化)
  228. /// </summary>
  229. /// <param name="redisKey"></param>
  230. /// <param name="hashField"></param>
  231. /// <param name="value"></param>
  232. /// <returns></returns>
  233. Task<bool> HashSetAsync<T>(string redisKey, string hashField, T value);
  234. /// <summary>
  235. /// 在 hash 中获取值(反序列化)
  236. /// </summary>
  237. /// <param name="redisKey"></param>
  238. /// <param name="hashField"></param>
  239. /// <returns></returns>
  240. Task<T> HashGetAsync<T>(string redisKey, string hashField);
  241. #endregion
  242. #endregion
  243. #region List 操作
  244. /// <summary>
  245. /// 移除并返回存储在该键列表的第一个元素
  246. /// </summary>
  247. /// <param name="redisKey"></param>
  248. /// <returns></returns>
  249. string ListLeftPop(string redisKey);
  250. /// <summary>
  251. /// 移除并返回存储在该键列表的最后一个元素
  252. /// </summary>
  253. /// <param name="redisKey"></param>
  254. /// <returns></returns>
  255. string ListRightPop(string redisKey);
  256. /// <summary>
  257. /// 移除列表指定键上与该值相同的元素
  258. /// </summary>
  259. /// <param name="redisKey"></param>
  260. /// <param name="redisValue"></param>
  261. /// <returns></returns>
  262. long ListRemove(string redisKey, string redisValue);
  263. /// <summary>
  264. /// 在列表尾部插入值。如果键不存在,先创建再插入值
  265. /// </summary>
  266. /// <param name="redisKey"></param>
  267. /// <param name="redisValue"></param>
  268. /// <returns></returns>
  269. long ListRightPush(string redisKey, string redisValue);
  270. /// <summary>
  271. /// 在列表头部插入值。如果键不存在,先创建再插入值
  272. /// </summary>
  273. /// <param name="redisKey"></param>
  274. /// <param name="redisValue"></param>
  275. /// <returns></returns>
  276. long ListLeftPush(string redisKey, string redisValue);
  277. /// <summary>
  278. /// 返回列表上该键的长度,如果不存在,返回 0
  279. /// </summary>
  280. /// <param name="redisKey"></param>
  281. /// <returns></returns>
  282. long ListLength(string redisKey);
  283. /// <summary>
  284. /// 返回在该列表上键所对应的元素
  285. /// </summary>
  286. /// <param name="redisKey"></param>
  287. /// <param name="start"></param>
  288. /// <param name="stop"></param>
  289. /// <returns></returns>
  290. IEnumerable<string> ListRange(string redisKey, long start = 0L, long stop = -1L);
  291. /// <summary>
  292. /// 移除并返回存储在该键列表的第一个元素
  293. /// </summary>
  294. /// <param name="redisKey"></param>
  295. /// <returns></returns>
  296. T ListLeftPop<T>(string redisKey);
  297. /// <summary>
  298. /// 移除并返回存储在该键列表的最后一个元素
  299. /// </summary>
  300. /// <param name="redisKey"></param>
  301. /// <returns></returns>
  302. T ListRightPop<T>(string redisKey);
  303. /// <summary>
  304. /// 在列表尾部插入值。如果键不存在,先创建再插入值
  305. /// </summary>
  306. /// <param name="redisKey"></param>
  307. /// <param name="redisValue"></param>
  308. /// <returns></returns>
  309. long ListRightPush<T>(string redisKey, T redisValue);
  310. /// <summary>
  311. /// 在列表头部插入值。如果键不存在,先创建再插入值
  312. /// </summary>
  313. /// <param name="redisKey"></param>
  314. /// <param name="redisValue"></param>
  315. /// <returns></returns>
  316. long ListLeftPush<T>(string redisKey, T redisValue);
  317. #region List 异步操作
  318. /// <summary>
  319. /// 移除并返回存储在该键列表的第一个元素
  320. /// </summary>
  321. /// <param name="redisKey"></param>
  322. /// <returns></returns>
  323. Task<string> ListLeftPopAsync(string redisKey);
  324. /// <summary>
  325. /// 移除并返回存储在该键列表的最后一个元素
  326. /// </summary>
  327. /// <param name="redisKey"></param>
  328. /// <returns></returns>
  329. Task<string> ListRightPopAsync(string redisKey);
  330. /// <summary>
  331. /// 移除列表指定键上与该值相同的元素
  332. /// </summary>
  333. /// <param name="redisKey"></param>
  334. /// <param name="redisValue"></param>
  335. /// <returns></returns>
  336. Task<long> ListRemoveAsync(string redisKey, string redisValue);
  337. /// <summary>
  338. /// 在列表尾部插入值。如果键不存在,先创建再插入值
  339. /// </summary>
  340. /// <param name="redisKey"></param>
  341. /// <param name="redisValue"></param>
  342. /// <returns></returns>
  343. Task<long> ListRightPushAsync(string redisKey, string redisValue);
  344. /// <summary>
  345. /// 在列表头部插入值。如果键不存在,先创建再插入值
  346. /// </summary>
  347. /// <param name="redisKey"></param>
  348. /// <param name="redisValue"></param>
  349. /// <returns></returns>
  350. Task<long> ListLeftPushAsync(string redisKey, string redisValue);
  351. /// <summary>
  352. /// 返回列表上该键的长度,如果不存在,返回 0
  353. /// </summary>
  354. /// <param name="redisKey"></param>
  355. /// <returns></returns>
  356. Task<long> ListLengthAsync(string redisKey);
  357. /// <summary>
  358. /// 返回在该列表上键所对应的元素
  359. /// </summary>
  360. /// <param name="redisKey"></param>
  361. /// <param name="start"></param>
  362. /// <param name="stop"></param>
  363. /// <returns></returns>
  364. Task<IEnumerable<string>> ListRangeAsync(string redisKey, long start = 0L, long stop = -1L);
  365. /// <summary>
  366. /// 移除并返回存储在该键列表的第一个元素
  367. /// </summary>
  368. /// <param name="redisKey"></param>
  369. /// <returns></returns>
  370. Task<T> ListLeftPopAsync<T>(string redisKey);
  371. /// <summary>
  372. /// 移除并返回存储在该键列表的最后一个元素
  373. /// </summary>
  374. /// <param name="redisKey"></param>
  375. /// <returns></returns>
  376. Task<T> ListRightPopAsync<T>(string redisKey);
  377. /// <summary>
  378. /// 在列表尾部插入值。如果键不存在,先创建再插入值
  379. /// </summary>
  380. /// <param name="redisKey"></param>
  381. /// <param name="redisValue"></param>
  382. /// <returns></returns>
  383. Task<long> ListRightPushAsync<T>(string redisKey, T redisValue);
  384. /// <summary>
  385. /// 在列表头部插入值。如果键不存在,先创建再插入值
  386. /// </summary>
  387. /// <param name="redisKey"></param>
  388. /// <param name="redisValue"></param>
  389. /// <returns></returns>
  390. Task<long> ListLeftPushAsync<T>(string redisKey, T redisValue);
  391. #endregion
  392. #endregion
  393. #region SortedSet 操作
  394. /// <summary>
  395. /// SortedSet 新增
  396. /// </summary>
  397. /// <param name="redisKey"></param>
  398. /// <param name="member"></param>
  399. /// <param name="score"></param>
  400. /// <returns></returns>
  401. bool SortedSetAdd(string redisKey, string member, double score);
  402. /// <summary>
  403. /// 在有序集合中返回指定范围的元素,默认情况下从低到高。
  404. /// </summary>
  405. /// <param name="redisKey"></param>
  406. /// <param name="start"></param>
  407. /// <param name="stop"></param>
  408. /// <param name="order"></param>
  409. /// <returns></returns>
  410. IEnumerable<string> SortedSetRangeByRank(string redisKey, long start = 0L, long stop = -1L,
  411. OrderType order = OrderType.Ascending);
  412. /// <summary>
  413. /// 返回有序集合的元素个数
  414. /// </summary>
  415. /// <param name="redisKey"></param>
  416. /// <returns></returns>
  417. long SortedSetLength(string redisKey);
  418. /// <summary>
  419. /// 返回有序集合的元素个数
  420. /// </summary>
  421. /// <param name="redisKey"></param>
  422. /// <param name="memebr"></param>
  423. /// <returns></returns>
  424. bool SortedSetLength(string redisKey, string memebr);
  425. /// <summary>
  426. /// SortedSet 新增
  427. /// </summary>
  428. /// <param name="redisKey"></param>
  429. /// <param name="member"></param>
  430. /// <param name="score"></param>
  431. /// <returns></returns>
  432. bool SortedSetAdd<T>(string redisKey, T member, double score);
  433. /// <summary>
  434. /// 增量的得分排序的集合中的成员存储键值键按增量
  435. /// </summary>
  436. /// <param name="redisKey"></param>
  437. /// <param name="member"></param>
  438. /// <param name="value"></param>
  439. /// <returns></returns>
  440. double SortedSetIncrement(string redisKey, string member, double value = 1);
  441. #region SortedSet 异步操作
  442. /// <summary>
  443. /// SortedSet 新增
  444. /// </summary>
  445. /// <param name="redisKey"></param>
  446. /// <param name="member"></param>
  447. /// <param name="score"></param>
  448. /// <returns></returns>
  449. Task<bool> SortedSetAddAsync(string redisKey, string member, double score);
  450. /// <summary>
  451. /// 在有序集合中返回指定范围的元素,默认情况下从低到高。
  452. /// </summary>
  453. /// <param name="redisKey"></param>
  454. /// <returns></returns>
  455. Task<IEnumerable<string>> SortedSetRangeByRankAsync(string redisKey);
  456. /// <summary>
  457. /// 返回有序集合的元素个数
  458. /// </summary>
  459. /// <param name="redisKey"></param>
  460. /// <returns></returns>
  461. Task<long> SortedSetLengthAsync(string redisKey);
  462. /// <summary>
  463. /// 返回有序集合的元素个数
  464. /// </summary>
  465. /// <param name="redisKey"></param>
  466. /// <param name="memebr"></param>
  467. /// <returns></returns>
  468. Task<bool> SortedSetRemoveAsync(string redisKey, string memebr);
  469. /// <summary>
  470. /// SortedSet 新增
  471. /// </summary>
  472. /// <param name="redisKey"></param>
  473. /// <param name="member"></param>
  474. /// <param name="score"></param>
  475. /// <returns></returns>
  476. Task<bool> SortedSetAddAsync<T>(string redisKey, T member, double score);
  477. /// <summary>
  478. /// 增量的得分排序的集合中的成员存储键值键按增量
  479. /// </summary>
  480. /// <param name="redisKey"></param>
  481. /// <param name="member"></param>
  482. /// <param name="value"></param>
  483. /// <returns></returns>
  484. Task<double> SortedSetIncrementAsync(string redisKey, string member, double value = 1);
  485. #endregion
  486. #endregion
  487. #region key 操作
  488. /// <summary>
  489. /// 移除指定 Key
  490. /// </summary>
  491. /// <param name="redisKey"></param>
  492. /// <returns></returns>
  493. bool KeyDelete(string redisKey);
  494. /// <summary>
  495. /// 移除指定 Key
  496. /// </summary>
  497. /// <param name="redisKeys"></param>
  498. /// <returns></returns>
  499. long KeyDelete(IEnumerable<string> redisKeys);
  500. /// <summary>
  501. /// 校验 Key 是否存在
  502. /// </summary>
  503. /// <param name="redisKey"></param>
  504. /// <returns></returns>
  505. bool KeyExists(string redisKey);
  506. /// <summary>
  507. /// 重命名 Key
  508. /// </summary>
  509. /// <param name="redisKey"></param>
  510. /// <param name="redisNewKey"></param>
  511. /// <returns></returns>
  512. bool KeyRename(string redisKey, string redisNewKey);
  513. /// <summary>
  514. /// 设置 Key 的时间
  515. /// </summary>
  516. /// <param name="redisKey"></param>
  517. /// <param name="expiry"></param>
  518. /// <returns></returns>
  519. bool KeyExpire(string redisKey, TimeSpan? expiry);
  520. #region key 异步操作
  521. /// <summary>
  522. /// 移除指定 Key
  523. /// </summary>
  524. /// <param name="redisKey"></param>
  525. /// <returns></returns>
  526. Task<bool> KeyDeleteAsync(string redisKey);
  527. /// <summary>
  528. /// 移除指定 Key
  529. /// </summary>
  530. /// <param name="redisKeys"></param>
  531. /// <returns></returns>
  532. Task<long> KeyDeleteAsync(IEnumerable<string> redisKeys);
  533. /// <summary>
  534. /// 校验 Key 是否存在
  535. /// </summary>
  536. /// <param name="redisKey"></param>
  537. /// <returns></returns>
  538. Task<bool> KeyExistsAsync(string redisKey);
  539. /// <summary>
  540. /// 重命名 Key
  541. /// </summary>
  542. /// <param name="redisKey"></param>
  543. /// <param name="redisNewKey"></param>
  544. /// <returns></returns>
  545. Task<bool> KeyRenameAsync(string redisKey, string redisNewKey);
  546. /// <summary>
  547. /// 设置 Key 的时间
  548. /// </summary>
  549. /// <param name="redisKey"></param>
  550. /// <param name="expiry"></param>
  551. /// <returns></returns>
  552. Task<bool> KeyExpireAsync(string redisKey, TimeSpan? expiry);
  553. #endregion
  554. #endregion
  555. }
  556. }