学习redis遇到的问题
1. pipeline为什么批量执行速度会变快?
答:是因为在tcp连接中减少了交互往返的时间,因为每次执行还要返回响应值,并且是一条执行完成之后才会执行下一条,但是批量执行只需要一次往返,所以节省了时间。需要注意的是这种批处理操作是不能与其他非“pipeline”操作同时进行,并且这种并不是打包的越多越好,因为会消耗相应的内存
2. 如果pipeline操作中有数据操作失败怎么办?
答:无论如何,pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的相应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
简单来说就是管道中的命令是没有关系的,它们只是像管道一样流水发给server,而不是串行执行,仅此而已;但是如果pipeline的操作被封装在事务中,那么将有事务来确保操作的成功与失败。
返回值是一个List,就是执行的各命令结果的集合。
3. pipeline与事务的区别?
答: 管道和事务是不同的,pipeline只是表达“交互”中操作的传递的方向性,pipeline也可以在事务中运行,也可以不在。
无论如何,pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的相应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
简单来说就是管道中的命令是没有关系的,它们只是像管道一样流水发给server,而不是串行执行,仅此而已;但是如果pipeline的操作被封装在事务中,那么将有事务来确保操作的成功与失败。
pipeline 只是把多个redis指令一起发出去,redis并没有保证这些指定的执行是原子的;multi相当于一个redis的transaction的,保证整个操作的原子性,避免由于中途出错而导致最后产生的数据不一致
4. multi等相关事务命令理解?
答:redis的事务是由multi和exec包围起来的部分,当发出multi命令时,redis会进入事务,redis会进入阻塞状态,不再响应任何别的客户端的请求,直到发出multi命令的客户端再发出exec命令为止。那么被multi和exec包围的命令会进入独享redis的过程,直到执行完毕。一个事务中的命令要么都执行,要么都不执行。遇到错误的时候不像mysql一样会回滚,而是继续执行,直到遇到exec命令,算是事务结束,返回值也是一个List,就是执行的各命令结果的集合。
5. flushall执行的后果?
答:这个命令会删除整个服务器的数据(删除所有的key值),这里面需要注意的你在当前数据库执行这个操作也是删除所有数据库的数据,此命令不会失败,永远返回的是“ok”,时间复杂度是O(n),即循环一次删除
6. redis的存储位置?
答:redis可以存在内存中也可以存在磁盘中,具体的区别是什么我还暂时不是很清楚,后期会继续学习
7. 缓存的删除?
答:定时删除:对内存友好,对cpu不友好,定时删除会及时释放内存,但是需要合理的数据结构存储这些定时器,还需要维护
懒惰删除:对内存不友好,对cpu友好,一般会进行过期key的检查,但是有可能会造成内存溢出
定期删除:删除的频率需要仔细斟酌,否则会造成懒惰删除的情况,导致内存溢出
最新文章
- 基于ionic+cordova+angularJs从零开始搭建自己的移动端H5 APP
- SQL语句执行效率及分析(note)
- Tesseract-OCR text2image.exe [ x86 支持 XP ]
- Code[VS] 1332 题解 【Kosaraju】【Tarjan】
- Audio Session Interruption
- c3p0配置详解
- Java中this关键字的使用
- 3-WebPack
- Zendstudio 9.0.2 安装Aptana3 并且配置 jQuery
- lintcode:Fibonacci 斐波纳契数列
- NOI题库1814 恼人的青蛙
- 【算法系列学习】Dijkstra求最短路 [kuangbin带你飞]专题四 最短路练习 D - Silver Cow Party
- day-5 python协程与I/O编程深入浅出
- java容易混淆的15个知识点
- Javascript根据id获取数组对象
- Spring Batch Bean 校验 API 支持
- Spring 学习01
- How Many Tables HDOJ
- ios基础动画、关键帧动画、动画组、转场动画等
- PHP 基础篇 - PHP 正则官方文档汇总
热门文章
- Netty In Action中文版 - 第十五章:选择正确的线程模型
- 第14章3节《MonkeyRunner源代码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
- Linux命令(九)——系统监视和进程控制
- 2016.04.07,英语,《Vocabulary Builder》Unit 11
- vue+element-ui实现前端分页
- LightOJ--1149--Factors and Multiples(二分图好题)
- computed与methods的异同
- HDU2080 夹角有多大2
- BZOJ 4771 主席树+倍增+set
- ASCII和ASCII扩展表