数据库完整性可确保输入至数据库中的数据,是准确、有效及一致的。数据库中任何数据改动,都必须乎合所有完整性限制及数据有效性检验。

实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人。
域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值。
参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性。
因为还没有写入MySQL,所以你在把数据写入Redis时,需要设计一个key来唯一标识一条数据.
MySQL表中应该设置一个唯一字段用于存储这个key.
这个key可以是一个由程序即时生成的随机唯一值,比如可以取Linux提供的uuid:
取到后用sadd添加到Redis的
集合(元素唯一)
添加成功,表示集合中没有这个uuid,在集合里是唯一的.
然后再把这个uuid用lpush添加到Redis的
列表(元素有序)
lpush入队后,当列表的长度大于等于N(自定义数值)时,Redis用lrange取出列表里的元素并
批量写入
优化就体现在:原来的即时写入转变为批量写入.
风险是:Redis意外崩溃有可能丢数据.
那就有丢失前1秒数据的风险.