发表于: 2017-11-09 23:28:43

2 657


今天完成的事情:

学习redis,了解redis和memcached的区别.

Memcached的命令或者说通讯协议非常简单,Server所支持的命令基本就是对特定key的添加,删除,替换,原子更新,读取等,具体包括 Set, Get, Add, Replace, Append, Inc/Dec 等等

 

Memcached的通讯协议包括文本格式和二进制格式,用于满足简单网络客户端工具(如telnet)和对性能要求更高的客户端的不同需求 

Redis的命令在KVString类型)上提供与Memcached类似的基本操作,在其它数据结构上也支持基本类似的操作(当然还有这些数据结构所特有的操作,如SetunionListpop等)而支持更多的数据结构,在一定程度上也就意味着更加广泛的应用场合

除了多种数据结构的支持,Redis相比Memcached还提供了许多额外的特性,比如Subscribe/publish命令,以支持发布/订阅模式这样的通知机制等等,这些额外的特性同样有助于拓展它的应用场景

Redis的客户端-服务器通讯协议完全采用文本格式(在将来可能的服务器间通讯会采用二进制格式)

memcached不保证存储的数据的有效性,Slab内部基于LRU也会自动淘汰旧数据,客户端不能假设数据在服务器端的当前状态,这应该说是MemcachedFeature设定,用户不必太多关心或者自己管理数据的淘汰更新工作,当然是否适合你的应用,取决于具体的需求,它也可能成为你需要精确自行控制Cache生命周期的一个障碍

Memcached也不做数据的持久化工作,但是有许多基于memcached协议的项目实现了数据的持久化,例如memcacheDB使用BerkeleyDB进行数据存储,但本质上它已经不是一个Cache Server,而只是一个兼容Memcached的协议key-valueData Store

Redis可以以master-slave的方式配置服务器,Slave节点对数据进行replica备份,Slave节点也可以充当Read only的节点分担数据读取的工作

Redis内建支持两种持久化方案,snapshot快照和AOF 增量Log方式。快照顾名思义就是隔一段时间将完整的数据Dump下来存储在文件中AOF增量Log则是记录对数据的修改操作(实际上记录的就是每个对数据产生修改的命令本身),两种方案可以并存,

memcached自身并不主动定期检查和标记哪些数据需要被淘汰,只有当再次读取相关数据时才检查时间戳,或者当内存不够使用需要主动淘汰数据时进一步检查LRU数据

Redis为了减少大量小数据CMD操作的网络通讯时间开销 RTT (Round Trip Time),支持pipelinescript技术

所谓的pipeline就是支持在一次通讯中,发送多个命令给服务器批量执行,带来的代价是服务器端需要更多的内存来缓存查询结果

Redis内嵌了LUA解析器,可以执行lua 脚本,脚本可以通过eval等命令直接执行,也可以使用script load等方式上传到服务器端的script cache中重复使用

服务器安装redis 配置端口号和密码



本地写个测试小demo

今天小课堂讲AOP时我就在想将memcached或者redis设置为环绕通知,,,于是网上找了个redis配置环绕通知的工具类 测试一下..

明天计划完成的事情:

将redis问题解决,如果无法解决就按照师兄的办法重新配置一个

完善一下自己的代码.提交任务6


遇到的困难:

redis read time out ..原因是上次访问错误之后,这次再访问就会带着上次的请求一起发送...重启redis之后就解决了.

第二个是一个环绕通知起作用,另外一个没有起作用..暂时还没偶解决.


任务进度:任务6步骤3

任务开始时间:2017-11-4

预计demo时间:2017-11-12

是否有延期风险:暂无

禅道:http://task.ptteng.com/zentao/task-view-13097.html



返回列表 返回列表
评论

    分享到