set.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. // Copyright 2019 github.com. All rights reserved.
  2. // Use of this source code is governed by github.com.
  3. package redis
  4. import "fmt"
  5. func (p *Redis) SCard(key string) (res int64, err error) {
  6. // 安全检查
  7. if p == nil {
  8. return res, errRedis
  9. }
  10. if p.cluster {
  11. // 客户端安全检查
  12. if p.cclient == nil {
  13. return res, errRedisCClient
  14. }
  15. return p.cclient.SCard(key).Result()
  16. }
  17. // 客户端安全检查
  18. if p.client == nil {
  19. return res, errRedisClient
  20. }
  21. return p.client.SCard(key).Result()
  22. }
  23. func (p *Redis) SAdd(key string, members ...interface{}) (res int64, err error) {
  24. // 安全检查
  25. if p == nil {
  26. return res, errRedis
  27. }
  28. if p.cluster {
  29. // 客户端安全检查
  30. if p.cclient == nil {
  31. return res, errRedisCClient
  32. }
  33. return p.cclient.SAdd(key, members...).Result()
  34. }
  35. // 客户端安全检查
  36. if p.client == nil {
  37. return res, errRedisClient
  38. }
  39. return p.client.SAdd(key, members...).Result()
  40. }
  41. func (p *Redis) SMembers(key string) (res []string, err error) {
  42. // 安全检查
  43. if p == nil {
  44. return res, errRedis
  45. }
  46. if p.cluster {
  47. // 客户端安全检查
  48. if p.cclient == nil {
  49. return res, errRedisCClient
  50. }
  51. return p.cclient.SMembers(key).Result()
  52. }
  53. // 客户端安全检查
  54. if p.client == nil {
  55. return res, errRedisClient
  56. }
  57. return p.client.SMembers(key).Result()
  58. }
  59. func (p *Redis) SIsmember(key string, member interface{}) (res bool, err error) {
  60. // 安全检查
  61. if p == nil {
  62. return res, errRedis
  63. }
  64. if p.cluster {
  65. // 客户端安全检查
  66. if p.cclient == nil {
  67. return res, errRedisCClient
  68. }
  69. return p.cclient.SIsMember(key, member).Result()
  70. }
  71. // 客户端安全检查
  72. if p.client == nil {
  73. return res, errRedisClient
  74. }
  75. return p.client.SIsMember(key, member).Result()
  76. }
  77. func (p *Redis) SInter(keys ...string) (res []string, err error) {
  78. // 安全检查
  79. if p == nil {
  80. return res, errRedis
  81. }
  82. if p.cluster {
  83. // 客户端安全检查
  84. if p.cclient == nil {
  85. return res, errRedisCClient
  86. }
  87. return nil, fmt.Errorf("cluster unsupport <sinter>.")
  88. }
  89. // 客户端安全检查
  90. if p.client == nil {
  91. return res, errRedisClient
  92. }
  93. return p.client.SInter(keys...).Result()
  94. }
  95. func (p *Redis) SPop(key string) (res string, err error) {
  96. // 安全检查
  97. if p == nil {
  98. return res, errRedis
  99. }
  100. if p.cluster {
  101. // 客户端安全检查
  102. if p.cclient == nil {
  103. return res, errRedisCClient
  104. }
  105. return p.cclient.SPop(key).Result()
  106. }
  107. // 客户端安全检查
  108. if p.client == nil {
  109. return res, errRedisClient
  110. }
  111. return p.client.SPop(key).Result()
  112. }
  113. func (p *Redis) SRem(key string, members ...interface{}) (res int64, err error) {
  114. // 安全检查
  115. if p == nil {
  116. return res, errRedis
  117. }
  118. if p.cluster {
  119. // 客户端安全检查
  120. if p.cclient == nil {
  121. return res, errRedisCClient
  122. }
  123. return p.cclient.SRem(key, members...).Result()
  124. }
  125. // 客户端安全检查
  126. if p.client == nil {
  127. return res, errRedisClient
  128. }
  129. return p.client.SRem(key, members...).Result()
  130. }
  131. func (p *Redis) Sscan(key string, scursor uint64, match string, count int64) (keys []string, cursor uint64, err error) {
  132. // 安全检查
  133. if p == nil {
  134. return nil, 0, errRedis
  135. }
  136. if p.cluster {
  137. // 客户端安全检查
  138. if p.cclient == nil {
  139. return nil, 0, errRedisCClient
  140. }
  141. return p.cclient.SScan(key, scursor, match, count).Result()
  142. }
  143. // 客户端安全检查
  144. if p.client == nil {
  145. return nil, 0, errRedisClient
  146. }
  147. return p.client.SScan(key, scursor, match, count).Result()
  148. }
  149. func (p *Redis) Smove(source, destination string, member interface{}) (bool, error) {
  150. // 安全检查
  151. if p == nil {
  152. return false, errRedis
  153. }
  154. if p.cluster {
  155. // 客户端安全检查
  156. if p.cclient == nil {
  157. return false, errRedisCClient
  158. }
  159. return p.cclient.SMove(source, destination, member).Result()
  160. }
  161. // 客户端安全检查
  162. if p.client == nil {
  163. return false, errRedisClient
  164. }
  165. return p.client.SMove(source, destination, member).Result()
  166. }