当前位置:Gxlcms > 数据库问题 > Nosql之Redis

Nosql之Redis

时间:2021-07-01 10:21:17 帮助过:10人阅读

<summary> /// Redis管理中心 /// </summary> public class RedisManager { /// <summary> /// redis配置文件信息 /// </summary> private static RedisConfigInfo RedisConfigInfo = new RedisConfigInfo(); /// <summary> /// Redis客户端池化管理 /// </summary> private static PooledRedisClientManager prcManager; /// <summary> /// 静态构造方法,初始化链接池管理对象 /// </summary> static RedisManager() { CreateManager(); } /// <summary> /// 创建链接池管理对象 /// </summary> private static void CreateManager() { string[] WriteServerConStr = RedisConfigInfo.WriteServerList.Split(,); string[] ReadServerConStr = RedisConfigInfo.ReadServerList.Split(,); prcManager = new PooledRedisClientManager(ReadServerConStr, WriteServerConStr, new RedisClientManagerConfig { MaxWritePoolSize = RedisConfigInfo.MaxWritePoolSize, MaxReadPoolSize = RedisConfigInfo.MaxReadPoolSize, AutoStart = RedisConfigInfo.AutoStart, }); } /// <summary> /// 客户端缓存操作对象 /// </summary> public static IRedisClient GetClient() { return prcManager.GetClient(); } } View Code 技术图片
  1. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #808080;">///</span><span style="color: #008000;"> redis配置文件信息
  3. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 也可以放到配置文件去
  4. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  5. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">sealed</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisConfigInfo
  6. {
  7. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  8. <span style="color: #808080;">///</span><span style="color: #008000;"> 可写的Redis链接地址
  9. </span><span style="color: #808080;">///</span><span style="color: #008000;"> format:ip1,ip2
  10. </span><span style="color: #808080;">///</span>
  11. <span style="color: #808080;">///</span><span style="color: #008000;"> 默认6379端口
  12. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  13. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> WriteServerList = <span style="color: #800000;">"</span><span style="color: #800000;">127.0.0.1:6379</span><span style="color: #800000;">"</span><span style="color: #000000;">;
  14. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  15. <span style="color: #808080;">///</span><span style="color: #008000;"> 可读的Redis链接地址
  16. </span><span style="color: #808080;">///</span><span style="color: #008000;"> format:ip1,ip2
  17. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  18. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> ReadServerList = <span style="color: #800000;">"</span><span style="color: #800000;">127.0.0.1:6379</span><span style="color: #800000;">"</span><span style="color: #000000;">;
  19. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  20. <span style="color: #808080;">///</span><span style="color: #008000;"> 最大写链接数
  21. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  22. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> MaxWritePoolSize = <span style="color: #800080;">60</span><span style="color: #000000;">;
  23. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  24. <span style="color: #808080;">///</span><span style="color: #008000;"> 最大读链接数
  25. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  26. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> MaxReadPoolSize = <span style="color: #800080;">60</span><span style="color: #000000;">;
  27. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  28. <span style="color: #808080;">///</span><span style="color: #008000;"> 本地缓存到期时间,单位:秒
  29. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  30. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> LocalCacheTime = <span style="color: #800080;">180</span><span style="color: #000000;">;
  31. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  32. <span style="color: #808080;">///</span><span style="color: #008000;"> 自动重启
  33. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  34. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> AutoStart = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
  35. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  36. <span style="color: #808080;">///</span><span style="color: #008000;"> 是否记录日志,该设置仅用于排查redis运行时出现的问题,
  37. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 如redis工作正常,请关闭该项
  38. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  39. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> RecordeLog = <span style="color: #0000ff;">false</span><span style="color: #000000;">;
  40. }</span>
View Code 技术图片
  1. <span style="color: #008080;"> 1</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #008080;"> 2</span> <span style="color: #808080;">///</span><span style="color: #008000;"> RedisBase类,是redis操作的基类,继承自IDisposable接口,主要用于释放内存
  3. </span><span style="color: #008080;"> 3</span> <span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  4. <span style="color: #008080;"> 4</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisBase : IDisposable
  5. </span><span style="color: #008080;"> 5</span> <span style="color: #000000;"> {
  6. </span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">public</span> IRedisClient iClient { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  7. </span><span style="color: #008080;"> 7</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  8. <span style="color: #008080;"> 8</span> <span style="color: #808080;">///</span><span style="color: #008000;"> 构造时完成链接的打开
  9. </span><span style="color: #008080;"> 9</span> <span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  10. <span style="color: #008080;">10</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> RedisBase()
  11. </span><span style="color: #008080;">11</span> <span style="color: #000000;"> {
  12. </span><span style="color: #008080;">12</span> iClient =<span style="color: #000000;"> RedisManager.GetClient();
  13. </span><span style="color: #008080;">13</span> <span style="color: #000000;"> }
  14. </span><span style="color: #008080;">14</span>
  15. <span style="color: #008080;">15</span> <span style="color: #008000;">//</span><span style="color: #008000;">public static IRedisClient iClient { get; private set; }
  16. </span><span style="color: #008080;">16</span> <span style="color: #008000;">//</span><span style="color: #008000;">static RedisBase()
  17. </span><span style="color: #008080;">17</span> <span style="color: #008000;">//</span><span style="color: #008000;">{
  18. </span><span style="color: #008080;">18</span> <span style="color: #008000;">//</span><span style="color: #008000;"> iClient = RedisManager.GetClient();
  19. </span><span style="color: #008080;">19</span> <span style="color: #008000;">//</span><span style="color: #008000;">}</span>
  20. <span style="color: #008080;">20</span>
  21. <span style="color: #008080;">21</span>
  22. <span style="color: #008080;">22</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">bool</span> _disposed = <span style="color: #0000ff;">false</span><span style="color: #000000;">;
  23. </span><span style="color: #008080;">23</span> <span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">void</span> Dispose(<span style="color: #0000ff;">bool</span><span style="color: #000000;"> disposing)
  24. </span><span style="color: #008080;">24</span> <span style="color: #000000;"> {
  25. </span><span style="color: #008080;">25</span> <span style="color: #0000ff;">if</span> (!<span style="color: #0000ff;">this</span><span style="color: #000000;">._disposed)
  26. </span><span style="color: #008080;">26</span> <span style="color: #000000;"> {
  27. </span><span style="color: #008080;">27</span> <span style="color: #0000ff;">if</span><span style="color: #000000;"> (disposing)
  28. </span><span style="color: #008080;">28</span> <span style="color: #000000;"> {
  29. </span><span style="color: #008080;">29</span> <span style="color: #000000;"> iClient.Dispose();
  30. </span><span style="color: #008080;">30</span> iClient = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  31. </span><span style="color: #008080;">31</span> <span style="color: #000000;"> }
  32. </span><span style="color: #008080;">32</span> <span style="color: #000000;"> }
  33. </span><span style="color: #008080;">33</span> <span style="color: #0000ff;">this</span>._disposed = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
  34. </span><span style="color: #008080;">34</span> <span style="color: #000000;"> }
  35. </span><span style="color: #008080;">35</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Dispose()
  36. </span><span style="color: #008080;">36</span> <span style="color: #000000;"> {
  37. </span><span style="color: #008080;">37</span> Dispose(<span style="color: #0000ff;">true</span><span style="color: #000000;">);
  38. </span><span style="color: #008080;">38</span> GC.SuppressFinalize(<span style="color: #0000ff;">this</span><span style="color: #000000;">);
  39. </span><span style="color: #008080;">39</span> <span style="color: #000000;"> }
  40. </span><span style="color: #008080;">40</span>
  41. <span style="color: #008080;">41</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Transcation()
  42. </span><span style="color: #008080;">42</span> <span style="color: #000000;"> {
  43. </span><span style="color: #008080;">43</span> <span style="color: #0000ff;">using</span> (IRedisTransaction irt = <span style="color: #0000ff;">this</span><span style="color: #000000;">.iClient.CreateTransaction())
  44. </span><span style="color: #008080;">44</span> <span style="color: #000000;"> {
  45. </span><span style="color: #008080;">45</span> <span style="color: #0000ff;">try</span>
  46. <span style="color: #008080;">46</span> <span style="color: #000000;"> {
  47. </span><span style="color: #008080;">47</span> irt.QueueCommand(r => r.Set(<span style="color: #800000;">"</span><span style="color: #800000;">key</span><span style="color: #800000;">"</span>, <span style="color: #800080;">20</span><span style="color: #000000;">));
  48. </span><span style="color: #008080;">48</span> irt.QueueCommand(r => r.Increment(<span style="color: #800000;">"</span><span style="color: #800000;">key</span><span style="color: #800000;">"</span>, <span style="color: #800080;">1</span><span style="color: #000000;">));
  49. </span><span style="color: #008080;">49</span> irt.Commit(); <span style="color: #008000;">//</span><span style="color: #008000;"> 提交事务</span>
  50. <span style="color: #008080;">50</span> <span style="color: #000000;"> }
  51. </span><span style="color: #008080;">51</span> <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception ex)
  52. </span><span style="color: #008080;">52</span> <span style="color: #000000;"> {
  53. </span><span style="color: #008080;">53</span> <span style="color: #000000;"> irt.Rollback();
  54. </span><span style="color: #008080;">54</span> <span style="color: #0000ff;">throw</span><span style="color: #000000;"> ex;
  55. </span><span style="color: #008080;">55</span> <span style="color: #000000;"> }
  56. </span><span style="color: #008080;">56</span> <span style="color: #000000;"> }
  57. </span><span style="color: #008080;">57</span> <span style="color: #000000;"> }
  58. </span><span style="color: #008080;">58</span>
  59. <span style="color: #008080;">59</span>
  60. <span style="color: #008080;">60</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  61. <span style="color: #008080;">61</span> <span style="color: #808080;">///</span><span style="color: #008000;"> 清除全部数据 请小心
  62. </span><span style="color: #008080;">62</span> <span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  63. <span style="color: #008080;">63</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> FlushAll()
  64. </span><span style="color: #008080;">64</span> <span style="color: #000000;"> {
  65. </span><span style="color: #008080;">65</span> <span style="color: #000000;"> iClient.FlushAll();
  66. </span><span style="color: #008080;">66</span> <span style="color: #000000;"> }
  67. </span><span style="color: #008080;">67</span>
  68. <span style="color: #008080;">68</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  69. <span style="color: #008080;">69</span> <span style="color: #808080;">///</span><span style="color: #008000;"> 保存数据DB文件到硬盘
  70. </span><span style="color: #008080;">70</span> <span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  71. <span style="color: #008080;">71</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Save()
  72. </span><span style="color: #008080;">72</span> <span style="color: #000000;"> {
  73. </span><span style="color: #008080;">73</span> iClient.Save();<span style="color: #008000;">//</span><span style="color: #008000;">阻塞式save</span>
  74. <span style="color: #008080;">74</span> <span style="color: #000000;"> }
  75. </span><span style="color: #008080;">75</span>
  76. <span style="color: #008080;">76</span> <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  77. <span style="color: #008080;">77</span> <span style="color: #808080;">///</span><span style="color: #008000;"> 异步保存数据DB文件到硬盘
  78. </span><span style="color: #008080;">78</span> <span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  79. <span style="color: #008080;">79</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> SaveAsync()
  80. </span><span style="color: #008080;">80</span> <span style="color: #000000;"> {
  81. </span><span style="color: #008080;">81</span> iClient.SaveAsync();<span style="color: #008000;">//</span><span style="color: #008000;">异步save</span>
  82. <span style="color: #008080;">82</span> <span style="color: #000000;"> }
  83. </span><span style="color: #008080;">83</span> }
View Code 技术图片
  1. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #808080;">///</span><span style="color: #008000;"> key-value 键值对:value可以是序列化的数据
  3. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  4. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisStringService : RedisBase
  5. {
  6. </span><span style="color: #0000ff;">#region</span> 赋值
  7. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  8. <span style="color: #808080;">///</span><span style="color: #008000;"> 设置key的value
  9. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  10. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> Set<T>(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key, T value)
  11. {
  12. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span>.iClient.Set<T><span style="color: #000000;">(key, value);
  13. }
  14. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  15. <span style="color: #808080;">///</span><span style="color: #008000;"> 设置key的value并设置过期时间
  16. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  17. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> Set<T>(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key, T value, DateTime dt)
  18. {
  19. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span>.iClient.Set<T><span style="color: #000000;">(key, value, dt);
  20. }
  21. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  22. <span style="color: #808080;">///</span><span style="color: #008000;"> 设置key的value并设置过期时间
  23. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  24. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> Set<T>(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key, T value, TimeSpan sp)
  25. {
  26. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span>.iClient.Set<T><span style="color: #000000;">(key, value, sp);
  27. }
  28. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  29. <span style="color: #808080;">///</span><span style="color: #008000;"> 设置多个key/value
  30. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  31. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> Set(Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">string</span>><span style="color: #000000;"> dic)
  32. {
  33. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.SetAll(dic);
  34. }
  35. </span><span style="color: #0000ff;">#endregion</span>
  36. <span style="color: #0000ff;">#region</span> 追加
  37. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  38. <span style="color: #808080;">///</span><span style="color: #008000;"> 在原有key的value值之后追加value,没有就新增一项
  39. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  40. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> Append(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  41. {
  42. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AppendToValue(key, value);
  43. }
  44. </span><span style="color: #0000ff;">#endregion</span>
  45. <span style="color: #0000ff;">#region</span> 获取值
  46. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  47. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取key的value值
  48. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  49. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Get(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  50. {
  51. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetValue(key);
  52. }
  53. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  54. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取多个key的value值
  55. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  56. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> Get(List<<span style="color: #0000ff;">string</span>><span style="color: #000000;"> keys)
  57. {
  58. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetValues(keys);
  59. }
  60. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  61. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取多个key的value值
  62. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  63. <span style="color: #0000ff;">public</span> List<T> Get<T>(List<<span style="color: #0000ff;">string</span>><span style="color: #000000;"> keys)
  64. {
  65. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span>.iClient.GetValues<T><span style="color: #000000;">(keys);
  66. }
  67. </span><span style="color: #0000ff;">#endregion</span>
  68. <span style="color: #0000ff;">#region</span> 获取旧值赋上新值
  69. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  70. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取旧值赋上新值
  71. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  72. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> GetAndSetValue(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  73. {
  74. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAndSetValue(key, value);
  75. }
  76. </span><span style="color: #0000ff;">#endregion</span>
  77. <span style="color: #0000ff;">#region</span> 辅助方法
  78. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  79. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取值的长度
  80. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  81. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> GetLength(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  82. {
  83. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetStringCount(key);
  84. }
  85. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  86. <span style="color: #808080;">///</span><span style="color: #008000;"> 自增1,返回自增后的值
  87. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  88. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> Incr(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  89. {
  90. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.IncrementValue(key);
  91. }
  92. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  93. <span style="color: #808080;">///</span><span style="color: #008000;"> 自增count,返回自增后的值
  94. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  95. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> IncrBy(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">int</span><span style="color: #000000;"> count)
  96. {
  97. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.IncrementValueBy(key, count);
  98. }
  99. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  100. <span style="color: #808080;">///</span><span style="color: #008000;"> 自减1,返回自减后的值
  101. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  102. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> Decr(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  103. {
  104. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.DecrementValue(key);
  105. }
  106. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  107. <span style="color: #808080;">///</span><span style="color: #008000;"> 自减count ,返回自减后的值
  108. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  109. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="key"></param></span>
  110. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="count"></param></span>
  111. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  112. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> DecrBy(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">int</span><span style="color: #000000;"> count)
  113. {
  114. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.DecrementValueBy(key, count);
  115. }
  116. </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">
  117. }</span>
View Code

 2)Hash

技术图片
  1. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #808080;">///</span><span style="color: #008000;"> Hash:类似dictionary,通过索引快速定位到指定元素的,耗时均等,跟string的区别在于不用反序列化,直接修改某个字段
  3. </span><span style="color: #808080;">///</span><span style="color: #008000;"> string的话要么是 001:序列化整个实体
  4. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 要么是 001_name: 001_pwd: 多个key-value
  5. </span><span style="color: #808080;">///</span><span style="color: #008000;"> Hash的话,一个hashid-{key:value;key:value;key:value;}
  6. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 可以一次性查找实体,也可以单个,还可以单个修改
  7. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  8. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisHashService : RedisBase
  9. {
  10. </span><span style="color: #0000ff;">#region</span> 添加
  11. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  12. <span style="color: #808080;">///</span><span style="color: #008000;"> 向hashid集合中添加key/value
  13. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  14. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> SetEntryInHash(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  15. {
  16. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.SetEntryInHash(hashid, key, value);
  17. }
  18. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  19. <span style="color: #808080;">///</span><span style="color: #008000;"> 如果hashid集合中存在key/value则不添加返回false,
  20. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 如果不存在在添加key/value,返回true
  21. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  22. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> SetEntryInHashIfNotExists(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  23. {
  24. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.SetEntryInHashIfNotExists(hashid, key, value);
  25. }
  26. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  27. <span style="color: #808080;">///</span><span style="color: #008000;"> 存储对象T t到hash集合中
  28. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 需要包含Id,然后用Id获取
  29. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  30. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> StoreAsHash<T><span style="color: #000000;">(T t)
  31. {
  32. </span><span style="color: #0000ff;">base</span>.iClient.StoreAsHash<T><span style="color: #000000;">(t);
  33. }
  34. </span><span style="color: #0000ff;">#endregion</span>
  35. <span style="color: #0000ff;">#region</span> 获取
  36. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  37. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取对象T中ID为id的数据。
  38. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  39. <span style="color: #0000ff;">public</span> T GetFromHash<T>(<span style="color: #0000ff;">object</span><span style="color: #000000;"> id)
  40. {
  41. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span>.iClient.GetFromHash<T><span style="color: #000000;">(id);
  42. }
  43. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  44. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取所有hashid数据集的key/value数据集合
  45. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  46. <span style="color: #0000ff;">public</span> Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">string</span>> GetAllEntriesFromHash(<span style="color: #0000ff;">string</span><span style="color: #000000;"> hashid)
  47. {
  48. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAllEntriesFromHash(hashid);
  49. }
  50. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  51. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取hashid数据集中的数据总数
  52. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  53. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> GetHashCount(<span style="color: #0000ff;">string</span><span style="color: #000000;"> hashid)
  54. {
  55. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetHashCount(hashid);
  56. }
  57. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  58. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取hashid数据集中所有key的集合
  59. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  60. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> GetHashKeys(<span style="color: #0000ff;">string</span><span style="color: #000000;"> hashid)
  61. {
  62. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetHashKeys(hashid);
  63. }
  64. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  65. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取hashid数据集中的所有value集合
  66. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  67. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> GetHashValues(<span style="color: #0000ff;">string</span><span style="color: #000000;"> hashid)
  68. {
  69. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetHashValues(hashid);
  70. }
  71. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  72. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取hashid数据集中,key的value数据
  73. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  74. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> GetValueFromHash(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  75. {
  76. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetValueFromHash(hashid, key);
  77. }
  78. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  79. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取hashid数据集中,多个keys的value集合
  80. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  81. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> GetValuesFromHash(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  82. {
  83. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetValuesFromHash(hashid, keys);
  84. }
  85. </span><span style="color: #0000ff;">#endregion</span>
  86. <span style="color: #0000ff;">#region</span> 删除
  87. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  88. <span style="color: #808080;">///</span><span style="color: #008000;"> 删除hashid数据集中的key数据
  89. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  90. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> RemoveEntryFromHash(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  91. {
  92. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.RemoveEntryFromHash(hashid, key);
  93. }
  94. </span><span style="color: #0000ff;">#endregion</span>
  95. <span style="color: #0000ff;">#region</span> 其它
  96. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  97. <span style="color: #808080;">///</span><span style="color: #008000;"> 判断hashid数据集中是否存在key的数据
  98. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  99. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> HashContainsEntry(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  100. {
  101. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.HashContainsEntry(hashid, key);
  102. }
  103. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  104. <span style="color: #808080;">///</span><span style="color: #008000;"> 给hashid数据集key的value加countby,返回相加后的数据
  105. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  106. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">double</span> IncrementValueInHash(<span style="color: #0000ff;">string</span> hashid, <span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">double</span><span style="color: #000000;"> countBy)
  107. {
  108. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.IncrementValueInHash(hashid, key, countBy);
  109. }
  110. </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">
  111. }</span>
View Code

3)Set

技术图片
  1. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #808080;">///</span><span style="color: #008000;"> Set:用哈希表来保持字符串的唯一性,没有先后顺序,存储一些集合性的数据
  3. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 1.共同好友、二度好友
  4. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 2.利用唯一性,可以统计访问网站的所有独立 IP
  5. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  6. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisSetService : RedisBase
  7. {
  8. </span><span style="color: #0000ff;">#region</span> 添加
  9. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  10. <span style="color: #808080;">///</span><span style="color: #008000;"> key集合中添加value值
  11. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  12. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> Add(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  13. {
  14. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddItemToSet(key, value);
  15. }
  16. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  17. <span style="color: #808080;">///</span><span style="color: #008000;"> key集合中添加list集合
  18. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  19. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> Add(<span style="color: #0000ff;">string</span> key, List<<span style="color: #0000ff;">string</span>><span style="color: #000000;"> list)
  20. {
  21. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddRangeToSet(key, list);
  22. }
  23. </span><span style="color: #0000ff;">#endregion</span>
  24. <span style="color: #0000ff;">#region</span> 获取
  25. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  26. <span style="color: #808080;">///</span><span style="color: #008000;"> 随机获取key集合中的一个值
  27. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  28. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> GetRandomItemFromSet(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  29. {
  30. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetRandomItemFromSet(key);
  31. }
  32. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  33. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取key集合值的数量
  34. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  35. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> GetCount(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  36. {
  37. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetSetCount(key);
  38. }
  39. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  40. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取所有key集合的值
  41. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  42. <span style="color: #0000ff;">public</span> HashSet<<span style="color: #0000ff;">string</span>> GetAllItemsFromSet(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  43. {
  44. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAllItemsFromSet(key);
  45. }
  46. </span><span style="color: #0000ff;">#endregion</span>
  47. <span style="color: #0000ff;">#region</span> 删除
  48. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  49. <span style="color: #808080;">///</span><span style="color: #008000;"> 随机删除key集合中的一个值
  50. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  51. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> RandomRemoveItemFromSet(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  52. {
  53. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.PopItemFromSet(key);
  54. }
  55. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  56. <span style="color: #808080;">///</span><span style="color: #008000;"> 删除key集合中的value
  57. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  58. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> RemoveItemFromSet(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  59. {
  60. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.RemoveItemFromSet(key, value);
  61. }
  62. </span><span style="color: #0000ff;">#endregion</span>
  63. <span style="color: #0000ff;">#region</span> 其它
  64. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  65. <span style="color: #808080;">///</span><span style="color: #008000;"> 从fromkey集合中移除值为value的值,并把value添加到tokey集合中
  66. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  67. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> MoveBetweenSets(<span style="color: #0000ff;">string</span> fromkey, <span style="color: #0000ff;">string</span> tokey, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  68. {
  69. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.MoveBetweenSets(fromkey, tokey, value);
  70. }
  71. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  72. <span style="color: #808080;">///</span><span style="color: #008000;"> 返回keys多个集合中的并集,返还hashset
  73. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  74. <span style="color: #0000ff;">public</span> HashSet<<span style="color: #0000ff;">string</span>> GetUnionFromSets(<span style="color: #0000ff;">params</span> <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  75. {
  76. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetUnionFromSets(keys);
  77. }
  78. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  79. <span style="color: #808080;">///</span><span style="color: #008000;"> 返回keys多个集合中的交集,返还hashset
  80. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  81. <span style="color: #0000ff;">public</span> HashSet<<span style="color: #0000ff;">string</span>> GetIntersectFromSets(<span style="color: #0000ff;">params</span> <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  82. {
  83. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetIntersectFromSets(keys);
  84. }
  85. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  86. <span style="color: #808080;">///</span><span style="color: #008000;"> 返回keys多个集合中的差集,返还hashset
  87. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  88. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="fromKey"></span><span style="color: #008000;">原集合</span><span style="color: #808080;"></param></span>
  89. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="keys"></span><span style="color: #008000;">其他集合</span><span style="color: #808080;"></param></span>
  90. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></span><span style="color: #008000;">出现在原集合,但不包含在其他集合</span><span style="color: #808080;"></returns></span>
  91. <span style="color: #0000ff;">public</span> HashSet<<span style="color: #0000ff;">string</span>> GetDifferencesFromSet(<span style="color: #0000ff;">string</span> fromKey, <span style="color: #0000ff;">params</span> <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  92. {
  93. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetDifferencesFromSet(fromKey,keys);
  94. }
  95. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  96. <span style="color: #808080;">///</span><span style="color: #008000;"> keys多个集合中的并集,放入newkey集合中
  97. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  98. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> StoreUnionFromSets(<span style="color: #0000ff;">string</span> newkey, <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  99. {
  100. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.StoreUnionFromSets(newkey, keys);
  101. }
  102. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  103. <span style="color: #808080;">///</span><span style="color: #008000;"> 把fromkey集合中的数据与keys集合中的数据对比,fromkey集合中不存在keys集合中,则把这些不存在的数据放入newkey集合中
  104. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  105. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> StoreDifferencesFromSet(<span style="color: #0000ff;">string</span> newkey, <span style="color: #0000ff;">string</span> fromkey, <span style="color: #0000ff;">string</span><span style="color: #000000;">[] keys)
  106. {
  107. </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.StoreDifferencesFromSet(newkey, fromkey, keys);
  108. }
  109. </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">
  110. }</span>
View Code

4)ZSet

技术图片
  1. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  2. <span style="color: #808080;">///</span><span style="color: #008000;"> Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列
  3. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 1.带有权重的元素,比如一个游戏的用户得分排行榜
  4. </span><span style="color: #808080;">///</span><span style="color: #008000;"> 2.比较复杂的数据结构,一般用到的场景不算太多
  5. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  6. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> RedisZSetService : RedisBase
  7. {
  8. </span><span style="color: #0000ff;">#region</span> 添加
  9. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  10. <span style="color: #808080;">///</span><span style="color: #008000;"> 添加key/value,默认分数是从1.多*10的9次方以此递增的,自带自增效果
  11. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  12. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> Add(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span style="color: #000000;"> value)
  13. {
  14. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddItemToSortedSet(key, value);
  15. }
  16. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  17. <span style="color: #808080;">///</span><span style="color: #008000;"> 添加key/value,并设置value的分数
  18. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  19. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> AddItemToSortedSet(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span> value, <span style="color: #0000ff;">double</span><span style="color: #000000;"> score)
  20. {
  21. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddItemToSortedSet(key, value, score);
  22. }
  23. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  24. <span style="color: #808080;">///</span><span style="color: #008000;"> 为key添加values集合,values集合中每个value的分数设置为score
  25. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  26. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> AddRangeToSortedSet(<span style="color: #0000ff;">string</span> key, List<<span style="color: #0000ff;">string</span>> values, <span style="color: #0000ff;">double</span><span style="color: #000000;"> score)
  27. {
  28. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddRangeToSortedSet(key, values, score);
  29. }
  30. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  31. <span style="color: #808080;">///</span><span style="color: #008000;"> 为key添加values集合,values集合中每个value的分数设置为score
  32. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  33. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> AddRangeToSortedSet(<span style="color: #0000ff;">string</span> key, List<<span style="color: #0000ff;">string</span>> values, <span style="color: #0000ff;">long</span><span style="color: #000000;"> score)
  34. {
  35. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.AddRangeToSortedSet(key, values, score);
  36. }
  37. </span><span style="color: #0000ff;">#endregion</span>
  38. <span style="color: #0000ff;">#region</span> 获取
  39. <span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  40. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取key的所有集合
  41. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  42. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> GetAll(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  43. {
  44. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAllItemsFromSortedSet(key);
  45. }
  46. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  47. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取key的所有集合,倒叙输出
  48. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  49. <span style="color: #0000ff;">public</span> List<<span style="color: #0000ff;">string</span>> GetAllDesc(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  50. {
  51. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAllItemsFromSortedSetDesc(key);
  52. }
  53. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  54. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取集合,带分数
  55. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  56. <span style="color: #0000ff;">public</span> IDictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">double</span>> GetAllWithScoresFromSortedSet(<span style="color: #0000ff;">string</span><span style="color: #000000;"> key)
  57. {
  58. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">base</span><span style="color: #000000;">.iClient.GetAllWithScoresFromSortedSet(key);
  59. }
  60. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  61. <span style="color: #808080;">///</span><span style="color: #008000;"> 获取key为value的下标值
  62. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  63. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">long</span> GetItemIndexInSortedSet(<span style="color: #0000ff;">string</span> key, <span style="color: #0000ff;">string</span><span <="" div="">
  64. <div class="">
  65. <ul class="m-news-opt fix">
  66. <li class="opt-item">
  67. <a href="/sql_question-396665.html" target="_blank"><p>< 上一篇</p><p class="ellipsis">MySQL数据库安装步骤</p></a>
  68. </li>
  69. <li class="opt-item ta-r">
  70. <a href="/sql_question-396667.html" target="_blank"><p>下一篇 ></p><p class="ellipsis">MySQL慢SQL语句常见诱因</p></a>
  71. </li>
  72. </ul>
  73. </div>
  74. </span>

人气教程排行