redis事务和mysql事务有什么区别?
mysql事务具有原子性,隔离性,一致性的特点。
redis提供multi, exec,watch来支持事务:
原子性,一致性:
redis保证在multi,exec之间的语句作为一个整体执行,redis在exec后,是无法回滚的,会出现部分成功,部分失败情况。
隔离性(mysql默认可重复读:事务中多次读取同一数据是一致的):
redis的事务类似mysql的串行化隔离界别,执行期间不会乱入其他语句。redis在事务使用乐观锁。
redis通过watch来监测数据,在执行exec前,监测的数据被其他人更改会抛出错误,取消执行。而exec执行时,redis保证不会插入其他人语句来实现隔离。
mysql怎么配置redis?
mysql配置redis缓存主要在service层进行,查询的结果会缓存,把对象序列号存到redis中去,key就是注解中的参数,例如@Cacheable("findUsers"): 存在redis中的key就是findUsers。缓存了这个结果之后再次请求这个方法就不会去数据库中查,而是从redis缓存中读取数据,这样就减少了跟数据库之间的交互。
然后修改、删除、增加操作就会清除缓存,保持数据的一致性。
该方法的查询结果放到redis中去,下一次再发起查询就去redis中去取,存在redis中的数据的key就是a,标注该方法查询的结果进入缓存,再次访问时直接读取缓存中的数据,清空缓存,并构建函数即可
mysql配置redis
1.
基于mysql的自定义函数(user-defined function UDF)来操作redis的接口,通过mysql触发器Trigger调动UDF来同步数据到Redis;
2.
第三方插件读取分析mysql的binlog二进制日志,将改变同步到Redis;
3.
mysql触发器Trigger调用Gearman任务分发,完成redis数据库的更新。
redis是不是mysql中间件?
不是。redis是一个数据库,只是和mysql这类的关系型数据库有些区别而已,mycat才是一个数据库中间件。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
MySQL和SQL的本质区别是什么?
看似MySQL和SQL很像,其实这两者本质上是有区别的,更不能把这两者都当成数据库来看待。
SQL是数据库管理及查询语言
SQL是结构化查询语言的英文简称,为便于理解,我们可以把SQL直接理解成操作关系型数据库的语言,它是一种特殊的编程语言。
SQL结构化查询语言其实有很多功能,数据库查询只是其中一部分,一般而言SQL语言主要包含以下几个部分:
数据库查询语言:确定数据如何查出
数据库操作语言:主要是Insert、Update、Delete等操作
事务控制语言:主要包含Commit、Rollback等事务类操作
数据定义语言:主要是对表进行的一些操作,如:Create、Alter、Drop等。
另外需要注意的是:SQL只是一种标准,不同的数据库对SQL语句的支持是不同的,比如你在MySQL中能执行某条SQL语句,同样的SQL语句在Oracle中就未必能执行!
MySQL是一种关系型数据库
MySQL它是当下应用最为广泛的开源关系型数据库,它是一款数据库综合软件,主要是用来管理和存储数据库中的数据的,它除了提供基本的数据库功能外,也支持SQL语言。
总结:SQL是一种用来操作数据库的程序语言,不同数据库的SQL语句也存在一些差异;而MySQL是一种数据库,通过SQL语言可以从MySQL中查找数据。
现在很多人把数据库简称为SQL,其实这是错误的!