Redis事务的定义
Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序地执行。事务在执行过程中,不会被其他客户端送来的命令请求多打断。
Redis事务的主要作用就是串联多个命令防止别的命令插队。
1. Multi、Exec、discard
从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
组队的过程中可以通过discard来放弃组队。
尚硅谷 my test 尚硅谷2. 事务的错误处理
组队中某个命令出现了报告错误,执行时整个的所有队列都会被取消。
尚硅谷 my test如果执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。
my test my test3. 悲观锁与乐观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
尚硅谷乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。
尚硅谷4. Redis事务的三个特性
单独的隔离操作
事务中的所有命令都会序列化,按顺序执行。事务在执行过程中,不会被其他客户端送来的命令请求所打断
没有隔离级别的概念
队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行
不保证原子性
事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚
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模式的数据备份;
网友评论