php-snowflake
php-snowflake copied to clipboard
关于维护多个sequence的讨论
假设有users, orders两张数据表,通过snowflake来为他们生成唯一主键id.
如果需要使这两种id的sequence不同怎么处理比较好?
目前想法是实例化两个不同的单例,每个RedisSequenceResolver的前缀设置成不一样的。 不知道有没有更好的方法。
示例:
$this->app->singleton('userIdGenerator', function ($app) {
return (new Snowflake(0, 0))
->setStartTimeStamp(strtotime('2022-07-20')*1000)
->setSequenceResolver(
(new RedisSequenceResolver($app->get('redis')))->setCachePrefix('UserId')
);
});
$this->app->singleton('orderIdGenerator', function ($app) {
return (new Snowflake(0, 0))
->setStartTimeStamp(strtotime('2022-07-20')*1000)
->setSequenceResolver(
(new RedisSequenceResolver($app->get('redis')))->setCachePrefix('OrderId')
);
});