redis中的错误
2017-01-04 14:59
169 查看
实现事务的方法
multi(开启事务)+exec(提交)+discard(放弃事务)+watch(CAS乐观锁)lua脚本
Redis事务的特点
事务中的所有方法串行执行,执行过程不会被其它client打断;事务是原子的,命令全执行,或全不执行,但是,Redis的原子性和关系数据库的原子性不一致,Redis虽然能保证命令全执行,但是如果某条命令在执行时出错,Redis会忽略它,继续执行下一条命令。
事务中的错误处理
语法错误或系统错误:对于这种类型的错误,在client执行事务前就能发现(事务中命令成功提交会返回queued),多数client会选择discard事务。从Redis2.6.5开始,服务端会记录这样的错误,在客户端exec时报错并自动丢弃该事务;这个命令可能会有语法错误(参数的数量错误、命令名称错误,等等),或者可能会有某些临界条件(例如:如果使用maxmemory指令,为Redis服务器配置内存限制,那么就可能会有内存溢出条件)。执行时报错:服务端会忽略该条语句的错误,直接执行事务中的下一跳语句。例如,我们对某个键执行了错误类型的操作(例如,对一个字符串(String)类型的键执行列表(List)类型的操作)。也就是说,执行时错误没有回滚的操作,官方的说法是这样有利于保持Redis简单高效。(1.Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令用在了错误类型的键上面:这也就是说,从实用性的角度来说,
失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。
2.因为不需要对回滚进行支持,所以 Redis 的内部可以保持简单且快速。
鉴于没有任何机制能避免程序员自己造成的错误,并且这类错误通常不会在生产环境中出现,所以 Redis 选择了更简单、更快速的无回滚方式来处理事务。
)
相关文章推荐
- Redis
- redis启用持久化
- Redis连接报错:DENIED Redis is running in protected mode because protected mode is enabled
- 三,redis数据类型-List
- redis 安装
- Windos下PHP安装redis扩展
- redis 常用命令
- 二,redis数据类型-String
- 玩转spring boot——结合redis
- cache-cloud 编译
- redis 与关系型数据库的适合场景
- redis 消息订阅
- Redis 中的事务
- redis Hash 哈希数据类型相关命令
- redis 集合 set 相关命令
- redis link 链表结构
- Redis字符串类型的操作
- Redis对于key的操作命令
- redis aof持久化踩的坑
- redis相关信息