首页 文章 精选 留言 我的

精选列表

搜索[高并发],共10000篇文章
优秀的个人博客,低调大师

可用Redis(一):通用命令,数据结构和内部编码,单线程架构

1.通用API 1.1 keys命令和dbsize命令 keys * 遍历所有key keys [pattern] 遍历模式下所有的key dbsize 计算Redis中所有key的总数 例子: 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> set php good OK 127.0.0.1:6379> set python best OK 127.0.0.1:6379> keys * # 查看Redis中所有的key 1) "hello" 2) "python" 3) "php" 127.0.0.1:6379> dbsize # 查看Redis中key的总数 (integer) 3 127.0.0.1:6379> keys p* # 查看Redis中以p开头的所有的key 1) "python" 2) "php" 127.0.0.1:6379> set perl aaa OK 127.0.0.1:6379> set c++ bbb OK 127.0.0.1:6379> keys p* # 查看Redis中所有的key 1) "python" 2) "php" 3) "perl" 127.0.0.1:6379> dbsize # 查看Redis中key的总数 (integer) 5 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 k4 v4 OK 127.0.0.1:6379> dbsize # 查看Redis中key的总数 (integer) 9 注意事项: !.keys命令的时间复杂度为O(n) 2.在生产环境中,使用keys命令取出所有key并没有什么意义,而且Redis是单线程应用,如果Redis中存的key很多,使用keys命令会阻塞其他命令执行,所以keys命令一般不在生产环境中使用 3.dbsize命令的时间复杂度是O(1) 4.Redis内置一个计数器,可以实时更新Redis中key的总数,所以dbsize命令可以在线上使用 1.2 exists命令和del命令 exists key 判断一个key是否存在 del key [key...] 删除指定的key-value 例子: 127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> exists k1 # 判断k1是否存在 (integer) 1 127.0.0.1:6379> exists k2 # 判断k2是否存在 (integer) 1 127.0.0.1:6379> del k1 # 删除k1这个键值对 (integer) 1 127.0.0.1:6379> exists k1 # 判断k1是否存在,0表示不存在 (integer) 0 127.0.0.1:6379> exists k2 # 判断k2是否存在,1表示key存在 (integer) 1 127.0.0.1:6379> set a1 b1 OK 127.0.0.1:6379> set a2 b2 OK 127.0.0.1:6379> del a1 a2 # 删除a1和a2键值对 (integer) 2 注意事项: del命令和exists命令的时间复杂度为O(1) 1.3 expire命令,ttl命令和persist命令 expire key seconds 设置key的过期时间,多少seconds后过期 ttl key 查看key剩余的过期时间 persist key 去掉key的过期时间 例子: 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> expire hello 20 (integer) 1 # 设置hello这个key的过期时间为20秒 127.0.0.1:6379> ttl hello (integer) 17 # 还有17秒过期 127.0.0.1:6379> ttl hello (integer) 11 # 还有11秒过期 127.0.0.1:6379> get hello "world" 127.0.0.1:6379> ttl hello (integer) 5 # 还有5秒过期 127.0.0.1:6379> ttl hello (integer) -2 # -2表示key已经不存在了 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> expire hello 20 (integer) 1 # 设置hello这个key的过期时间为20秒 127.0.0.1:6379> ttl hello (integer) 15 # 还有15秒过期 127.0.0.1:6379> persist hello (integer) 1 # 删除hello的过期时间 127.0.0.1:6379> ttl hello (integer) -1 # -1表示key存在,并且没有过期时间 127.0.0.1:6379> get hello "world" 注意事项: expire命令和ttl命令,persist命令的时间复杂度都是O(1) 1.4 type命令 type key # 返回key的类型 例子: 127.0.0.1:6379> set a b OK 127.0.0.1:6379> type a string 127.0.0.1:6379> sadd myset 1 2 3 (integer) 3 127.0.0.1:6379> type myset set 127.0.0.1:6379> type abc # 查看一个不存在的key时,返回None,表示key不存在 none 注意事项: type的返回结果有6种:string,hash,list,set,zset,none type命令的时间复杂度为O(1) 2.数据结构和内部编码 Redis每种数据结构及对应的内部编码如下图所示 3.单线程架构 Redis内部使用单线程架构。 比如一条公路,这条公路只有一条车道。所有从这条车道上行驶的车,都必须按先来后到的顺序依次行驶 Redis一个瞬间只能执行一条命令,不能执行两条命令 3.1 Redis单线程为什么这么快 1.纯内存 Redis把所有的数据都保存在内存中,而内存的响应速度是非常快的 2.非阻塞IO Redis使用epoll异步非阻塞模型 Redis自身实现了事件处理 3.避免线程切换和竞态消耗 在使用多线程编程中,线程之间的切换也会消耗一部分CPU资源, 如果不合理的实现多线程编程,可能比单线程还要慢 注意事项: 一次只运行一条命令 拒绝长(慢)命令 keys flushall flushdb slow lua script mutil/exec operate

优秀的个人博客,低调大师

Amazon宣布将MXNet作为AWS的深度学习框架——貌似性能比tf

Amazon公司的Werner Vogels于上周宣布Amazon深度学习框架将会正式选用MXNet,并且AWS将会通过增加源代码贡献、改进文档以及支持来自其它框架的可视化、开发以及迁移工具,为实现MXNet成功的长远目标做出贡献。 Vogles指出在欺诈检测、推荐流水线、库存和产品检查审计等领域,有一系列无法通过编写显式算法实现的计算任务,对此问题一类被称为深度学习的机器学习方法正日益发挥重要作用,此外,在内容搜索、自主无人机、订单履行中心机器人、文本及语音识别等领域中也广泛地使用了机器学习方法。Vogels给出了Amazon在深度学习框架选取中所考虑的三个因素,即扩展能力、开发速度及可移植性。 深度学习程序库Caffe、CNTK、MXNet、TensorFlow、Theano和Torch都得到了Amazon的评估,并且被AWS所支持。现在AWS选定了MXNet作为可扩展框架,并号召开源社区为MXNet投入更多的努力。在机器学习平台服务的开发上,AWS所采取的方法将会如同在RDS中一样,并且: “我们将通过提供最好的EC2实例组及适用的软件工具,支持深度学习框架领域中所有广受欢迎的深度学习框架。” Vogels提到了今年初发布的深度学习AMI及附带的云信息模板。AMI工具集是一种64位的Amazon Linux发布版,其中预装了对CNTK的支持,以及针对MXNet、Graphviz、pygal和Pythonpandas的更新包。该发布版中预置了六种深度学习架构,分别是NXNet、Caffe、TensorFlow、Theano、Torch和CNTK。AMI中还包括NVIDIA CUDAToolkit和cuDNN库安装程序、Anaconda、Python2和3。评论表明这仍是第一代的AMI,它已经可为开始使用GPU架构的分析工程师提供良好的工作基础。 MXNet最初是由华盛顿大学和卡内基梅隆大学(CMU)开发,用于支持卷积神经网络(CNN)和长短期记忆网络(LSTM)运算。CMU计算机科学系主任Andrew Moore指出: MXNet诞生于CMU,并在CMU发展壮大。它是我目前所见到的最具扩展性的深度学习框架,也是计算机科学领域辉煌研究的代表性成果。多个不同学科交汇于其中并共同协作,实现将线性代数创造性地引入大规模分布式计算中,从而引领了深度学习的全新局面。我们很高兴看到Amazon对MXNet的投入,并迫切期待MXNet能不断地走向强大。 CMU在MXNet上训练了Inception V3算法。训练运行在一个P2实例的集群上,并逐步增添了GPU数目。在运行多至1000层的深度网络时,MXNet仅占用了低至4GB的内存。MXNet支持多种语言的API接口,包括Python、C++(并支持在Android和iOS上编译)、R、Scala、Julia、Matlab和JavaScript。 转自:http://www.infoq.com/cn/news/2016/12/amazon-mxnet-deep-learning 本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/8328265.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册