redis 与 memcached区别
1, redis 具有持久化功能, 可以定时将内存中的数据持久化到硬盘
2, redis 有binlog功能,出现故障时,可以通过binlog恢复
3, redis 支持 virtal memory , 可以限定内存使用的大小, 当内存中的数据超出一定阀值时,可 以通过类似LRU算法,将数据写入硬盘页
4, redis 支持更多的原生数据类型 memcached 仅支持k-v
redis 支持 String, Hash, Set, List, Sorted Set
redis 事件
redis 通过 watct, multi, exec, discard 四个命令实现事务,
事件三个阶段
1, 开启事务
2,命令入队列
3, 执行事务
watch 监听的值 在其他客户端连接被改变时 执行exec 会返回错误
事件的四大特性
Redis 的事务保证了 ACID 中的一致性(C)和隔离性(I),但并不保证原子性(A)和持久性(D)
a 原子性 redis 事务的执行并不是原子性的, 没有原子性机制, 如被kill 不会解发回滚
c 一致性
i 隔离性 redis 是单进程,有隔离性
d 持久性 成功将内存写入硬盘后才有持久性
只有在客户端的 REDIS_DIRTY_CAS 选项未被打开时,才能执行事务,否则事务直接返回失败。