consts.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Author: simon (ynwdlxm@163.com)
  2. // Date: 2025/5/26 13:51
  3. // Desc:
  4. package reply
  5. // PongReply 表示PONG响应,用于Redis协议的PONG响应
  6. type PongReply struct{}
  7. func (p PongReply) String() string {
  8. return "+PONG\r\n"
  9. }
  10. // ToBytes 将PONG响应转换为字节数组
  11. // 返回格式:"+PONG\r\n"
  12. func (p PongReply) ToBytes() []byte {
  13. return []byte("+PONG\r\n")
  14. }
  15. // NewPongReply 创建新的PongReply实例
  16. func NewPongReply() *PongReply {
  17. return &PongReply{}
  18. }
  19. // OkReply 表示OK响应,用于Redis协议的OK响应
  20. // 返回格式:"+OK\r\n"
  21. type OkReply struct{}
  22. func (o OkReply) String() string {
  23. return "+OK\r\n"
  24. }
  25. // ToBytes 将OK响应转换为字节数组
  26. // 返回格式:"+OK\r\n"
  27. func (o OkReply) ToBytes() []byte {
  28. return []byte("+OK\r\n")
  29. }
  30. // NewOkReply 创建新的OkReply实例
  31. func NewOkReply() *OkReply {
  32. return &OkReply{}
  33. }
  34. // NoReply 表示NO响应,用于Redis协议的NO响应
  35. type NoReply struct{}
  36. func (n NoReply) String() string {
  37. return ""
  38. }
  39. // ToBytes 将NO响应转换为字节数组
  40. func (n NoReply) ToBytes() []byte {
  41. return []byte("")
  42. }
  43. // NewNoReply 创建新的NoReply实例
  44. func NewNoReply() *NoReply {
  45. return &NoReply{}
  46. }
  47. // NullBulkReply 表示NULL响应,用于Redis协议的NULL响应
  48. // 返回格式:"$-1\r\n"
  49. type NullBulkReply struct{}
  50. func (n NullBulkReply) String() string {
  51. return "$-1\r\n"
  52. }
  53. // ToBytes 将NULL响应转换为字节数组
  54. // 返回格式:"$-1\r\n"
  55. func (n NullBulkReply) ToBytes() []byte {
  56. return []byte("$-1\r\n")
  57. }
  58. func NewNullBulkReply() *NullBulkReply {
  59. return &NullBulkReply{}
  60. }
  61. // EmptyMultiBulkReply 表示空的多批量回复,用于Redis协议的空的多批量回复(空数组)
  62. // 返回格式:"*0\r\n"
  63. type EmptyMultiBulkReply struct{}
  64. func (e EmptyMultiBulkReply) String() string {
  65. return "*0\r\n"
  66. }
  67. // ToBytes 将空的多批量回复转换为字节数组
  68. func (e EmptyMultiBulkReply) ToBytes() []byte {
  69. return []byte("*0\r\n")
  70. }
  71. func NewEmptyMultiBulkReply() *EmptyMultiBulkReply {
  72. return &EmptyMultiBulkReply{}
  73. }
  74. // IsOkReply 判断回复是否为OK响应
  75. func IsOkReply(reply interface{}) bool {
  76. _, ok := reply.(*OkReply)
  77. return ok
  78. }