如何利用Redis做数据库的主键生成机制
有些情况,我们不能使用数据库自带的主键生成机制(例如:使用分表的策略,采用数据库自增主键将使得每张物理表的主键彼此独立,这不是我们想要的)。
由于这段时间redis使用挺多的,现在就看看如何生成主键。
我们初步设想ID的生成规则:
根据每一个库的每一张表组合成一个key, 然后依靠redis进行生成ID
1. 首先定义了一个生成id的接口类
2. 定义一个子类,实现我们的接口
3. 或使用Spring的redisTemplate实现,这就是接口的好处了,扩展另一种实现很方便。
至此,主键的生成机制就完成了,以后想扩展直接添加实现类就行。
但现在要替换MySQL自带的主键机制,我就需要手动的创建PrimarykeyGenerator的子类
调用generateId(String dbName, String tableName)返回我们需要插入的主键值,赋值给ID属性,在插入就完成了。
如果使用了Spring框架 ,像JedisPrimarykeyGenerator自定义类都交给spring管理。
具体怎么配就不在这里写。(相信大家都会的)
当然,我们还有很多需要完善的,例如我想像使用MySQL自带的主键机制时,根本就不关心ID的设置问题,多方便,多省心。
其实我们也是可以做到的,比如使用Mybatis做为映射框架,就可以自定义一个自动插入主键ID的插件,依赖intercept,自动处理手动设置ID的工作,这样就和使用MySQL自带的主键机制一样,不用我们关心ID的设置问题了。(这样也能练习一下ibatis拦截器)