redis.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package util
  2. import (
  3. "fmt"
  4. "github.com/go-redis/redis"
  5. "iot_manager_service/config"
  6. "strconv"
  7. "time"
  8. )
  9. var Redis *redis.Client
  10. func InitRedis() error {
  11. cfg := config.Instance()
  12. addr := cfg.Redis.Host
  13. Redis = redis.NewClient(&redis.Options{
  14. Addr: addr,
  15. DialTimeout: 10 * time.Second,
  16. ReadTimeout: 30 * time.Second,
  17. WriteTimeout: 30 * time.Second,
  18. PoolSize: 10,
  19. PoolTimeout: 30 * time.Second,
  20. Password: cfg.Redis.Password,
  21. })
  22. _, err := Redis.Ping().Result()
  23. if err != nil {
  24. return err
  25. }
  26. return nil
  27. }
  28. const (
  29. DeviceStateKey = "dev_stat_"
  30. ONLINE = "online"
  31. TLast = "tlast"
  32. )
  33. //GetDeviceState 获取设备状态 1在线 2离线
  34. func GetDeviceState(id string) (retTime time.Time, retState string) {
  35. defer func() {
  36. if err1 := recover(); err1 != nil {
  37. fmt.Println("GetDeviceState err = ", err1)
  38. }
  39. }()
  40. retTime = time.Time{}
  41. retState = "2"
  42. //redis中 0在线 1离线
  43. //todo 需要统一
  44. list, err := Redis.HMGet(DeviceStateKey+id, TLast, ONLINE).Result()
  45. if err == nil && list[0] != nil || list[1] != nil {
  46. t, err1 := MlParseTime(list[0].(string))
  47. s, err0 := strconv.Atoi(list[1].(string))
  48. if err0 == nil && err1 == nil {
  49. if s == 0 {
  50. retState = "1"
  51. }
  52. retTime = t
  53. }
  54. }
  55. return
  56. }