几点建议,让Redis在你的系统中发挥更大作用

Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不需要转到Redis。 转向Redis当然也是可取的,许多开发者从一开始就把Redis作为首选数据库;但设想如果你的开发环境已经搭建好,应用已经在上面运行了,那么 更换数据库框架显然不那么容易。另外在一些需要大容量数据集的应用,Redis也并不适合,因为它的数据集不会超过系统可用的内存。所以如果你有大数据应 用,而且主要是读取访问模式,那么Redis并不是正确的选择。 然而我喜欢Redis的一点就是你可以把它融入到你的系统中来,这就能够解决很多问题,比如那些你现有的数据库处理起来感到缓慢的任务。这些你就可 以通过Redis来进行优化,或者为应用创建些新的功能。在本文中,我就想探讨一些怎样将Redis加入到现有的环境中,并利用它的原语命令等功能来解决 传统环境中碰到的一些常见问题。在这些例子中,Redis都不是作为首选数据库。 显示最新的项目列表 下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问会越来越慢。 SELECT * FROM foo WHERE … ORDER BY time DESC LIMIT 10 在Web应用中,“列出最新的回复”之类的查询非常普遍,这通常会带来可扩展性问题。这令人沮丧,因为项目本来就是按这个顺序被创建的,但要输出这个顺序却不得不进行排序操作。 类似的问题就可以用Redis来解决。比如说,我们的一个Web应用想要列出用户贴出的最新20条评论。在最新的评论边上我们有一个“显示全部”的链接,点击后就可以获得更多的评论。 我们假设数据库中的每条评论都有一个唯一的递增的ID字段。 我们可以使用分页来制作主页和评论页,使用Redis的模板: -每次新评论发表时,我们会将它的ID添加到一个Redis列表:

连载之四:深度揭秘微信的敏捷开发与流程管理

IT海盗:这是微信的解构与建构连载的第四篇,依然干货连连,读起来激情澎湃。微信敏捷开发中的“微循环”是什么?张小龙怎样在看似“混乱”的流程管理中无招胜有招?让我们一起来享受微信连载第四篇! 点击这里查看前三篇并注意首篇开头的声明:(一)微信的诞生(二)微信的开发历程; (三)微信团队:这里像艺术中心、研究院、学校 敏捷是一种态度,试错是一种信仰。——微信团队Harvey 敏捷开发 敏捷开发是一种常用的软件开发模式,与传统的“瀑布式开发”相比,敏捷开发能够持续满足不断变化的需求变动。微信团队的情况正是这样,“整个开发过程中产品会不断修改,这是我们的特色。”Harvey说,“哪怕在发布前的十分钟,我们也要允许产品决策者提出变更。”“为了给产品决策者提供最大的自由度,敏捷原则成为整个开发流程的指导原则,”“极度敏捷”也成为技术团队乃至整个微信团队的追求。

php在linux系统下mkdir()函数的权限问题

php在linux系统下mkdir()函数的权限问题 php代码创建一个目录,期望的目录权限是0777,但结果权限却是0755。 mkdir(“file”,0777); 结论: 1、php中的mkdir()函数创建的指定目录权限只能小于等于系统umask设定的默认权限。 2、php中的chmod()函数不受系统umask设定的权限影响,可以设置比系统默认权限大的权限。 3、linux系统中的mkdir命令可以设置大于默认值的权限。 总结: 从上述结论中可以得出如下结果。在用php中的mkdir()函数创建读写权限目录的时候,不要直接使用mkdir函数指定权限,以避免系统umask的影响。可以用如下代码: mkdir(“file); chmod(“file”,0777);

nginx url重写问题

发现一个问题,如果这样设置, if (!-e $request_filename) { #地址作为将参数rewrite到index.php上。 rewrite ^/(.*)$ /index.php/$1; #若是子目录则使用下面这句,将subdir改成目录名称即可。 #rewrite ^/subdir/(.*)$ /subdir/index.php/$1; } 地址可以重定向 比如: 重启Nginx以后,http://localhost/project/Index/insert, http://localhost/project/index.php/Index/delete 这样的URL 但问题是index.php后面加一个/就会502 Bad Gateway报错,好像与隐藏index.php没有什么关系,框架是thinkphp,这是什么问题 nginx/1.5.2 php 5.5.1 后来将nginx版本降至1.0.15后,添加一段location就可以了? 虽然两个版本的配置文件有不一样,分析后得出还是location中的问题   location / { #ThinkPHP Rewrite if ( !-e $request_filename ){ rewrite ^/(.*)$ /index.php/$1; } }   location ~ .php($|/){ #配置PHP支持PATH_INFO进行URL重写 set $script     $uri; set $path_info […]

javascript 随机数生成方法

1.使用内置的随机数发生方法: Math.random(); //该方法产生一个0到1之间的浮点数。 Math.floor(Math.random()*10+1); //1-10 Math.floor(Math.random()*24);//0-23 2.基于时间,亦可以产生随机数: var now=new Date(); var number = now.getSeconds(); //这将产生一个基于目前时间的0到59的整数。 var now=new Date(); var number = now.getSeconds()%43; //这将产生一个基于目前时间的0到42的整数。 3. 一个相当优秀的的随机数发生器程序,能应用于许多领域。 <script language=”JavaScript”><!– // The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) // See: http://www.msc.cornell.edu/~houle/javascript/randomizer.html rnd.today=new Date(); rnd.seed=rnd.today.getTime(); function rnd() { rnd.seed = (rnd.seed*9301+49297) % 233280; return rnd.seed/(233280.0); }; function […]