redis、memache 乐观锁和进程
来源:互联网 发布:gis地图数据 编辑:程序博客网 时间:2024/05/20 06:27
Memcached乐观锁
Memcached提供了2个命令 gets + cas。gets取出数据的时候,同时返回版本号;修改之后, cas回去的时候,会比较该版本号和服务器上最新的版本号。如果不等,则cas失败。
Redis乐观锁
Redis提供了watch命令,如下所示:
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
方案3 – Redis事务
Redis也提供了事务的概念,但它不能回滚。如果1条命令执行错误,会继续执行下面的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
此处的multi/extc,类似Mysql中的beganTransaction/endTransaction。
另外,由于redis是单线程的,因此事务里面的多条语句执行时,不会被打断。
Memcached的多线程 vs. Redis单线程
我们都知道, Memcached内部是多线程的,而Redis是单线程的。多线程好理解,但Redis为什么要搞成单线程呢?
个人认为,有以下几个原因:
(1)redis有各种复杂的数据结构list, has, set。也就是说,对于一个(key, value),value的类型可以是list, hash, set。在实际应用场景中,很容易出现多个客户端对同一个key的这个复杂的value数据结构进行并发操作,如果是多线程,势必要引入锁,而锁却是性能杀手。
相比较而言,memcached只有简单的get/set/add操作,没有复杂数据结构,在互斥这个问题上,没有redis那么严重。
(2)对于纯内存操作来说,cpu并不是瓶颈,瓶颈在网络IO上。所以即使单线程,也很快。另外,如果要利用多核的优势,可以在一个机器上开多个redis实例。
0 0
- redis、memache 乐观锁和进程
- 使用Memache 作为进程锁
- redis乐观锁
- Redis 乐观锁
- redis乐观锁
- redis的 悲观锁和乐观锁的区别
- redis--事务处理与乐观锁
- Redis CAS乐观锁实现
- redis 事务以及乐观锁
- Redis乐观锁控制事务
- Redis源码剖析和注释(二十八)--- Redis 事务实现和乐观锁
- 悲观和乐观锁
- redis--乐观锁--粗粒度锁
- Redis 乐观锁与悲观锁
- 7.Redis事务处理(简单、乐观锁)
- redis事务及事务乐观锁
- Redis——乐观锁控制事务
- redis 乐观锁实践秒杀
- 通过批处理执行jar并使用log4j记录日志
- hibernate使用 Ehcache
- PLSQL 基础教程 四 分组查询
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- 反射中如何判断字段类型
- redis、memache 乐观锁和进程
- Java的类的成员初始化和所谓“初始化块”初始化的步骤
- tensorflow tutorials(五):用tensorflow实现自编码器(Auto-Encoder)
- for ... of循环和for ... in循环有何区别?
- 对单词的逆序
- Golang 在 Mac、Linux、Windows 下如何交叉编译
- spring 项目初始化两次原因
- Strom组件的介绍
- 关于OnPaint函数的工作原理(很详细,很实用)