美文网首页
Redis--事务,锁机制,Redis和Memcached的区别

Redis--事务,锁机制,Redis和Memcached的区别

作者: Amy1234567 | 来源:发表于2021-09-04 14:56 被阅读0次

    Redis事务的定义

    Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序地执行。事务在执行过程中,不会被其他客户端送来的命令请求多打断。

    Redis事务的主要作用就是串联多个命令防止别的命令插队。

    1. Multi、Exec、discard

    从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。

    组队的过程中可以通过discard来放弃组队。 

    尚硅谷 my test 尚硅谷

    2. 事务的错误处理

    组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消。

    尚硅谷 my test

    如果执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。

    my test my test

    3. 悲观锁与乐观锁

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁表锁等,读锁写锁等,都是在做操作之前先上锁。

    尚硅谷

    乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。

    尚硅谷

    4. Redis事务的三个特性

    \Rightarrow 单独的隔离操作

    事务中的所有命令都会序列化,按顺序执行。事务在执行过程中,不会被其他客户端送来的命令请求所打断

    \Rightarrow 没有隔离级别的概念

    队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行

    \Rightarrow 不保证原子性

    事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

    Redis和Memcached的区别

    1. 类型

    Redis是一个开源的内存数据结构存储系统,用作数据库,缓存和消息代理。

    Memcached是一个免费的开源高性能分布式对象内存系统,它通过减少数据库负载来加速动态Web应用程序。

    2. 数据结构

    Redis支持字符串,散列,列表,集合,有序集,位图,超级日志和空间索引。

    Memcached支持字符串和整数。

    3. 执行速度

    Memcached的读写速度高于Redis。

    4. 复制

    Memcached不支持复制。

    Redis支持主从复制,允许从属Redis服务器称为主服务器的精确副本;来自任何Redis服务器的数据都可以复制到任意数量的从属服务器。

    5. 密匙长度

    Redis的密匙长度最大为2GB

    Memcached的密匙长度最大为250字节

    6. 线程

    Redis是单线程的

    Memcached是多线程的

    另附

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;

    2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;

    3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;

    4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10;

    5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从;

    6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);

    7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复;

    8、Redis支持数据的备份,即master-slave模式的数据备份;

    相关文章

      网友评论

          本文标题:Redis--事务,锁机制,Redis和Memcached的区别

          本文链接:https://www.haomeiwen.com/subject/cgpbiltx.html