新浪云Redis服务正式上线了,2016年5月13日之前可以免费使用。Redis 是一个基于内存、键值对的开源存储系统。它可以用作数据库、缓存和消息中间件。
Redis 主要特点
通过内存+硬盘的存储方式,在满足大并发下的高速数据读写的同时完成数据持久化。
所有 Redis 实例都是一主一从架构,实时监控您的 Redis 实例,如果主节点宕机,我们会自动将从节点提升为主,从而保证服务和数据不受任何影响,在满足高性能的同时保障数据安全。
Redis 使用场景
排行榜应用
计数器应用
数据去重应用
消息发布、订阅系统
需要频繁读写的数据
作为数据持久化的缓冲,解决数据库的写入瓶颈
依托于Redis的超高性能,让系统的性能瓶颈问题迎刃而解
自从有了Redis服务,再也不需要使用Counter服务啦。这会儿得容Counter服务静静了。那么问题来了,怎么实现? Just show the code!
<?php $redis = new Redis(); $redis->connect('host', port); $redis->auth('password'); if (isset($_REQUEST['id'])) { echo '当前页面访问人数' . $redis->hIncrBy('PV_SET', $_REQUEST['id'], 1); } else { $pvs = $redis->hGetAll('PV_SET'); foreach($pvs as $id => $count) { echo "页面" . $id . "被访问" . $count . "次<br>"; } }
这是一个简单的统计页面,当请求参数中id不为空时,给对应id的页面访问加1,如果id为空时,把所有页面的访问次数都打印出来。
所以,当不停访问某个id的文章时,就会出现 当前页面访问人数1,2,3,4
不停的递增。
当不加id时,就会打印出所有页面的访问次数:
页面1被访问4次 页面2被访问3次 页面3被访问2次
这样不用再一个一个去新建Counter了。高并发高可用的计数器瞬间就走起了!就这么轻松加愉快。
有的时候,我们可能只需要显示最新的一部分数据,比如最新的100条评论,最新的10条新闻,如果每次都去读数据库,那效率就太低了,
这时候,Redis的强大就体现出来啦,如何实现一个简单的获取最新评论的功能呢?不说话,静静的做个看代码的美男子吧~
<?php
$redis = new Redis(); $redis->connect('host', port); $redis->auth('password'); if (isset($_REQUEST['comment'])) { //有新评论,添加到列表中 $redis->lPush('latest.comment', $_REQUEST['comment']); //只保留最新的10条,其他都丢掉 $redis->lTrim('latest.comment', 0, 9); //存入数据库 //... } else { //取出最新的10条评论 $comments = $redis->lRange('latest.comment', 0, 9); foreach($comments as $comment) { echo $comment . "<br>"; } } 最后的结果: three two one 5 4 3 2
这里利用了Redis的一个List功能,将所有评论从左边一个一个放到一个列表里,并利用提供的LTrim功能,将右边多余的给删除掉。 在取的时候,只需要从左边取对应的条数,就剩下了所有最新的数据了。是不是超简单呢?相比于数据库的Limit N,也是要快至少10倍左右,不信,你试试。2016年5月13日之前完全免费哦~~