redis面试题原子性,redis increment 原子性

redis┃面试官问我redis事务和mysql事务的区别,我1、在数据库方面,mysql是关系型数据库主要用于存放持久化数据,redis是NOSQL , 即非关系型数据库,也是缓存数据库,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限 。
2、类型不同 MySQL是关系型数据库;而Redis是非关系型数据库 。作用不同 mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢 。redis用于存储使用较为频繁的数据到缓存中,读取速度快 。
3、从类型上来说,mysql是关系型数据库,redis是缓存数据库 。mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢 。redis用于存储使用较为频繁的数据到缓存中,读取速度快 。
redis不支持原子操作【redis面试题原子性,redis increment 原子性】如果get得到的值都为正确的数据,基本能判断set和get命令为原子操作 。
如果开启事务,操作不会被立即执行,将会返回null值,而a的类型是boolean,所以将会抛出异常:Redis事务不支持Rollback(重点)事实上Redis命令在事务执行时可能会失败,但仍会继续执行剩余命令而不是Rollback(事务回滚) 。
Redis在8以后支持Lua脚本的原子性操作 , 可以用来做分布式锁,解决超限的问题 。
redis事物通过multi命令开始 。这条命令总是返回ok 。然后用户可以执行多条指令,redis不会马上执行这些指令,还只是放入到队列中 。当执行exec指令时,所有的指令执行 。
redis的set指令具有原子性吗1、试想开1000个写线程,1000个读线程同时操作Redis中的一个值,假如set和get不是原子的,那么当set的时候,把原来数据涂掉,还没来得及写进去 , get操作已经执行,这个时候get到的值就可能为脏数据 。
2、check-and-set(乐观锁) , 实现get,set命令序列数据的原子性:watch指令在redis事物中提供了cas的行为 。为了检测被watch的keys在是否有多个clients改变时引起冲突,这些keys将会被监控 。
3、在程序中执行多个Redis命令并非是原子性的,这也和普通数据库的表现是一样的 。如果想在上面的程序中实现原子性,可以将get和set改成单命令操作,比如incr,或者使用Redis的事务,或者使用Redis+Lua的方式实现 。
关于redis面试题原子性和redis increment 原子性的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读