1. package main
    2. import (
    3. "context"
    4. "fmt"
    5. "time"
    6. "github.com/go-redis/redis/v8"
    7. )
    8. //Go1.7加入了一个新的标准库context,它定义了Context类型,专门用来简化 对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作
    9. var ctx = context.Background()
    10. func main() {
    11. rdb := redis.NewClient(&redis.Options{
    12. Addr: "localhost:6379",
    13. Password: "", // no password set
    14. DB: 0, // use default DB
    15. })
    16. _, err := rdb.Ping(ctx).Result()
    17. if err != nil {
    18. fmt.Println("redis数据库连接失败")
    19. }
    20. //设置获取字符串
    21. // err = rdb.Set(ctx, "username", "zhangsan", 0).Err()
    22. // if err != nil {
    23. // panic(err)
    24. // }
    25. // userinfo, _ := rdb.Get(ctx, "username").Result()
    26. // fmt.Println(userinfo)
    27. //设置获取列表
    28. rdb.LPush(ctx, "hobby", "吃饭", "睡觉")
    29. // rdb.RPush(ctx, "hobby", "写代码", "打篮球")
    30. // hoddy, _ := rdb.LRange(ctx, "hobby", 0, -1).Result()
    31. // fmt.Println(hoddy)
    32. //设置过期
    33. rdb.Expire(ctx, "hobby", time.Second*20).Result()
    34. //设置集合
    35. // rdb.SAdd(ctx, "hobby", "吃饭", "睡觉")
    36. // rdb.SAdd(ctx, "hoddy", "吃饭")
    37. // hoddy, _ := rdb.SMembers(ctx, "hobby").Result()
    38. // fmt.Println(hoddy)
    39. // //设置哈希值
    40. // err2 := rdb.HMSet(ctx, "userinfo", map[string]interface{}{
    41. // "username": "张三",
    42. // "age": 20,
    43. // }).Err()
    44. // if err2 != nil {
    45. // fmt.Println(err2)
    46. // }
    47. // userinfo, err := rdb.HGetAll(ctx, "userinfo").Result()
    48. // fmt.Println(userinfo, err)
    49. // fmt.Println(userinfo["age"])
    50. go func() {
    51. time.Sleep(time.Second * 2)
    52. //发布
    53. rdb.Publish(ctx, "server0", "this is a message")
    54. }()
    55. pubsub := rdb.Subscribe(ctx, "server0")
    56. ch := pubsub.Channel()
    57. for msg := range ch {
    58. fmt.Println(msg.Channel, msg.Payload)
    59. }
    60. }
    61. //订阅
    1. package main
    2. import (
    3. "context"
    4. "fmt"
    5. "strconv"
    6. "time"
    7. "github.com/go-redis/redis/v8"
    8. )
    9. var ctx = context.Background()
    10. func main() {
    11. rdb := redis.NewClient(&redis.Options{
    12. Addr: "localhost:6379",
    13. Password: "", // no password set
    14. DB: 0, // use default DB
    15. })
    16. _, err := rdb.Ping(ctx).Result()
    17. if err != nil {
    18. fmt.Println("redis数据库连接失败")
    19. }
    20. for i := 0; i < 100; i++ {
    21. time.Sleep(time.Second * 2)
    22. rdb.Publish(ctx, "server0", "this is a message"+strconv.Itoa(i))
    23. }
    24. }
    25. //订阅