发表于: 2017-11-14 23:47:41

1 773


今天完成的事情:

预热小课堂过程中学习了redis的原子特性和事务处理,

分享小课堂.将小课堂上传腾讯视频,写简书,搞PPT.

写阿里短信工具类并测试成功,其实并不难,我想复杂了.

public  SendSmsResponse sendAliSms(String phone, int num) throws ClientException {
//可自助调整超时时间
   System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
   System.setProperty("sun.net.client.defaultReadTimeout", "10000");
   //初始化acsClient,暂不支持region化
   IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
   DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
   IAcsClient acsClient = new DefaultAcsClient(profile);
   //组装请求对象-具体描述见控制台-文档部分内容
   SendSmsRequest request = new SendSmsRequest();
   //必填:待发送手机号
   request.setPhoneNumbers(phone);
   //必填:短信签名-可在短信控制台中找到    黑白电影
   request.setSignName(sign);
   //必填:短信模板-可在短信控制台中找到   SMS_109535460
   request.setTemplateCode(smscode);
   //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
   request.setTemplateParam("{\"code\":" + "\"" + num + "\"" + "}");
   //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
   request.setOutId("yourOutId");
   //        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
   //request.setSmsUpExtendCode("90997");
   //hint 此处可能会抛出异常,注意catch
   SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
   return sendSmsResponse;
}

明天计划的事情:

明天去参见网络安全大会


遇到的困难:

卡在工具类和注入好久,走偏了唉..

收获:

在预热小课堂过程中,又学习了redis和memcached的区别,

  • 性能方面:没有必要过多的关心性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。(比如瓶颈可能会在网卡)
  • 内存使用效率:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
  • 数据持久化:如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
  • 数据结构:当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
  • 网络IO模型方面:Memcached是多线程,分为监听线程、worker线程,引入锁,带来了性能损耗。Redis使用单线程的IO复用模型,将速度优势发挥到最大,也提供了较简单的计算功能 

  • 内存管理方面:Memcached使用预分配的内存池的方式,带来一定程度的空间浪费 并且在内存仍然有很大空间时,新的数据也可能会被剔除,而Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据 Redis更适合作为存储而不是cache 

  • 数据的一致性方面:Memcached提供了cas命令来保证.而Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断 

另外学习redis的一些其他特性..搞懂了spring三种注入方法的区别.


任务进度:任务7步骤2

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

预计demo时间:2017-11-21

是否有延期风险:暂无

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



返回列表 返回列表
评论

    分享到