This is a unofficial port of Leaf.
๐ Homepage
- generate id in segment mode
- generate id in snowflake mode
- mysql
- redis
- postgresql
- sqlite
- mongodb
- runtime-agnostic(tokio or async-std) when using mysql or postgres
- lazy mode: fetch leaf by tag lazily and needs remove it manually
- http server or rpc service(actually just implement it by yourself ๐)
- performance
- correctness
Enabling the mysql
and runtime-tokio
feature:
use leaves::dao::MySqlLeafDao;
use leaves::{SegmentIDGen, Config, Result};
#[tokio::main]
async main() -> Result<()> {
let dao = Arc::new(MySqlLeafDao::new("mysql://...").await?);
let mut service = SegmentIDGen::new(dao, Config::new());
service.init().await?;
let tag = 1;
for _ in 0..1000 {
println!("{}", service.get(tag).await?);
}
}
1,000,000 IDs in 15ms(local MongoDB with R7 3700X)