博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis第二步(事务和锁)
阅读量:6288 次
发布时间:2019-06-22

本文共 944 字,大约阅读时间需要 3 分钟。

问redis和memcached的区别

1、持久化的区别
redis可以用来存储(storge),而memcached用来缓存(cache)
redis的存储是实实在在的存储在硬盘上的,而memcached只是存储在内存中,断电即销毁
2、存储数据的”结构“
redis支持字符串、链表、哈希结构、集合、有序集合,而memcached只有1种类型就是“字符串”

相对的,redis支持的方法也多,相对memcached来说学习起来,也比memcached要稍微复杂一点点。

redis的事务处理

redis是单进程的程序,故对数据操作事务是加入队列中,最后exec提交

redis> set wang 200

redis> set zhao 700

redis> multi 开启事务

redis> decrby zhao 100 减掉zhao的100
redis> incrby wang 100 加上wang的100
redis> exec 执行事务
redis> discard 清除队列中的命令

如果事务中间加入错误的命令,redis报错,事务将会被取消掉

注意:命令是被加入队列中,挨个执行,但是其中一句语法正常,但是业务错误,例如,sadd wang hello,这样,这句的上一句执行成功,这一句执行失败,不能保证业务数据的一致性,也就是说,不支持mysql那种的回滚,只支持取消队列中的命令

执行事务时,要注意加锁,避免真正在exec执行队列中的命令时,操作的数据已被修改

悲观锁:先给数据(ticket)上锁,只有我能操作
乐观锁:监视数据,看有没有人修改数据(ticket)就行了,exec的数据修改,那么就取消事务即可。

Redis的事务中,启用的是乐观锁,只负责监测key没有被改动

------》watch命令
multi之前,先监控数据
redis> watch ticket
redis> multi 开启事务
....
...
redis> exec 执行事务
假如数据(ticket)被修改了,执行exec就返回(nil)
redis> watch key1,key2,key3 监视多个key,其中一个数据被修改,所有的都取消
取消监视 unwatch

转载地址:http://fyuta.baihongyu.com/

你可能感兴趣的文章
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>