Categorygithub.com/zhanglp0129/redis_snowflake
modulepackage
1.0.1
Repository: https://github.com/zhanglp0129/redis_snowflake.git
Documentation: pkg.go.dev

# README

RedisSnowflake

将雪花算法生成分布式id的参数放到Redis中,并采用分布式锁,保证分布式场景下id的正确性

使用

  1. 安装依赖
go get -u github.com/zhanglp0129/redis_snowflake
  1. 创建雪花算法配置
cfg := snowflake.DefaultConfig
startTime, _ := time.Parse("2006-01-02 15:04:05", "2024-08-14 00:00:00")
cfg.SetStartTime(startTime)
  1. 创建redis实例
rdb := redis.NewClient(&redis.Options{
    Addr: "127.0.0.1:6379",
})
defer rdb.Close()
  1. 创建工作节点
// 使用分布式锁保证并发安全
worker, err := redis_snowflake.NewRedisWorker(rdb, "key", "lock-key", cfg, 0)
// 使用lua脚本保证并发安全
worker, err := redis_snowflake.NewRedisWorkerNoLock(rdb, "key", cfg, 0)
  1. 生成id
id, err := worker.GenerateId()

LICENSE

MIT

# Functions

NewRedisWorker 创建一个雪花算法的redis工作节点;rdb,redis实例 key,存储在redis中,雪花id生成参数对应的key;lockKey,分布式锁对应的key; config,雪花算法相关配置;machineId,机器码.
NewRedisWorkerNoLock 创建一个不使用分布式锁的雪花算法redis工作节点;rdb,redis实例 key,存储在redis中,雪花id生成参数对应的key; config,雪花算法相关配置;machineId,机器码.

# Variables

No description provided by the author
go:embed lua.
No description provided by the author

# Structs

No description provided by the author
No description provided by the author