ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
利用redis的原子性和string类型数据的incr函数,实现一个简易的ID生成服务,封装为函数。 // 生成唯一ID func generateID() (id int64, err error) { rdb := getRedisConn() // 定义一个短网址的,用来保证唯一的key key := "dwzid" exists, err := rdb.Exists(ctx, key).Result() if err != nil { return 0, err } if exists == 0 { // Key does not exist 设置string类型键值 err = rdb.Set(ctx, key, "10000000000000000", 0).Err() if err != nil { return 0, err } // 获取并打印出刚才设置的值 valstr, err := rdb.Get(ctx, key).Result() if err != nil { return 0, err } id, err = strconv.ParseInt(valstr, 10, 64) if err != nil { return 0, err } return id, nil } // Key exists 使用INCR命令 id, err = rdb.Incr(ctx, key).Result() if err != nil { return 0, err } return id, nil } 封装redis连接器 // 获取Redis连接 func getRedisConn() *redis.Client { rdb := redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", // Redis地址 Password: "", // Redis密码,如果没有则为空字符串 DB: 0, // 使用默认DB }) return rdb }