redis rpc服务, 提供redis操作方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

213 lines
3.3 KiB

  1. package redisrpc
  2. import (
  3. "encoding/json"
  4. "log"
  5. "github.com/golang/protobuf/proto"
  6. )
  7. //设置
  8. func SAdd(key, field string, url ...string) (int64, error) {
  9. conn, _, err := Conn(url...)
  10. if err != nil {
  11. return 0, err
  12. }
  13. defer conn.Close()
  14. req := &SSetRequest{proto.String(key), proto.String(field), nil}
  15. res := &SSetResponse{}
  16. err = conn.SAdd(req, res)
  17. if err != nil {
  18. return 0, err
  19. }
  20. return res.GetRet(), nil
  21. }
  22. //删除
  23. func SRem(key string, field string, url ...string) (int64, error) {
  24. conn, _, err := Conn(url...)
  25. if err != nil {
  26. return 0, err
  27. }
  28. defer conn.Close()
  29. req := &SSetRequest{proto.String(key), proto.String(field), nil}
  30. res := &SSetResponse{}
  31. err = conn.SRem(req, res)
  32. if err != nil {
  33. return 0, err
  34. }
  35. return res.GetRet(), nil
  36. }
  37. /**
  38. * 全部
  39. */
  40. func SIsmember(key string, field string, url ...string) (int64, error) {
  41. conn, _, err := Conn(url...)
  42. if err != nil {
  43. return 0, err
  44. }
  45. defer conn.Close()
  46. req := &SSetRequest{proto.String(key), proto.String(field), nil}
  47. res := &SSetResponse{}
  48. err = conn.SIsmember(req, res)
  49. if err != nil {
  50. return 0, err
  51. }
  52. return res.GetRet(), nil
  53. }
  54. /**
  55. * 集合成员数
  56. */
  57. func SCard(key string, url ...string) (int64, error) {
  58. conn, _, err := Conn(url...)
  59. if err != nil {
  60. return 0, err
  61. }
  62. defer conn.Close()
  63. req := &SMembersRequest{proto.String(key), nil}
  64. res := &SSetResponse{}
  65. err = conn.SCard(req, res)
  66. if err != nil {
  67. return 0, err
  68. }
  69. return res.GetRet(), nil
  70. }
  71. //设置
  72. func ZAdd(key, score, member string, url ...string) (int64, error) {
  73. conn, _, err := Conn(url...)
  74. if err != nil {
  75. return 0, err
  76. }
  77. defer conn.Close()
  78. req := &ZSetRequest{proto.String(key), proto.String(score), proto.String(member), nil}
  79. res := &ZSetResponse{}
  80. err = conn.ZAdd(req, res)
  81. if err != nil {
  82. return 0, err
  83. }
  84. return res.GetRet(), nil
  85. }
  86. //递增
  87. func ZIncrBy(key, inc, member string, url ...string) (int64, error) {
  88. conn, _, err := Conn(url...)
  89. if err != nil {
  90. return 0, err
  91. }
  92. defer conn.Close()
  93. req := &ZSetRequest{proto.String(key), proto.String(inc), proto.String(member), nil}
  94. res := &ZSetResponse{}
  95. err = conn.ZIncrBy(req, res)
  96. if err != nil {
  97. return 0, err
  98. }
  99. return res.GetRet(), nil
  100. }
  101. /**
  102. * 集合成员
  103. */
  104. func ZRange(key string, start, stop int64, url ...string) ([]map[string]string, error) {
  105. conn, _, err := Conn(url...)
  106. if err != nil {
  107. return nil, err
  108. }
  109. defer conn.Close()
  110. req := &ZRangeRequest{proto.String(key), proto.Int64(start), proto.Int64(stop), nil}
  111. res := &HGetListResponse{}
  112. err = conn.ZRange(req, res)
  113. if err != nil {
  114. return nil, err
  115. }
  116. value := res.GetList()
  117. var list []map[string]string
  118. err = json.Unmarshal(value, &list)
  119. if err != nil {
  120. log.Println("json unmarshal error:", err)
  121. return nil, err
  122. }
  123. return list, nil
  124. }
  125. /**
  126. * 集合成员
  127. */
  128. func ZScan(key, field string, len int64, url ...string) ([]string, error) {
  129. conn, _, err := Conn(url...)
  130. if err != nil {
  131. return nil, err
  132. }
  133. defer conn.Close()
  134. req := &ZScanRequest{proto.String(key), proto.String(field), proto.Int64(len), nil}
  135. res := &HGetListResponse{}
  136. err = conn.ZScan(req, res)
  137. if err != nil {
  138. return nil, err
  139. }
  140. value := res.GetList()
  141. var list []string
  142. err = json.Unmarshal(value, &list)
  143. if err != nil {
  144. log.Println("json unmarshal error:", err)
  145. return nil, err
  146. }
  147. return list, nil
  148. }