mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
finished dist id
This commit is contained in:
parent
f21c424ab5
commit
a77de3ad07
@ -162,3 +162,62 @@ redis 127.0.0.1:6379> SADD base64_encoding_of_last16bits MzI0Mgo=
|
||||
redis 127.0.0.1:6379> SADD base64_encoding_of_last16bits MzI0Mgo=
|
||||
(integer) 0
|
||||
```
|
||||
|
||||
使用起来也比较简单,有一些逻辑简单的函数就略去实现了:
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/sony/sonyflake"
|
||||
)
|
||||
|
||||
func getMachineID() (uint16, error) {
|
||||
var machineID uint16
|
||||
var err error
|
||||
machineID = readMachineIDFromLocalFile()
|
||||
if machineID == 0 {
|
||||
machineID, err = generateMachineID()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
|
||||
return machineID, nil
|
||||
}
|
||||
|
||||
func checkMachineID(machineID uint16) bool {
|
||||
saddResult, err := saddMachineIDToRedisSet()
|
||||
if err != nil || saddResult == 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
err := saveMachineIDToLocalFile(machineID)
|
||||
if err != nil {
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func main() {
|
||||
t, _ := time.Parse("2006-01-02", "2018-01-01")
|
||||
settings := sonyflake.Settings{
|
||||
StartTime: t,
|
||||
MachineID: getMachineID,
|
||||
}
|
||||
|
||||
sf := sonyflake.NewSonyflake(settings)
|
||||
id, err := sf.NextID()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fmt.Println(id)
|
||||
}
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user