1.你使用Redis的理由是什么?使用redis有哪些好处?
Redis是开源的,使用ANSI C语言编写,用户可以较容易地进行一些个性化定制。其次,Redis提供多种语言的API,提供了Python、Ruby、Erlang、PHP客户端,可以较好地满足不同的开发场景。
它是一个高性能的key-value存储系统,数据都是缓存在内存中,周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现主从同步。非常适合不涉及过多数据关系的业务数据,能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。
2.Redis的应用场景有哪些?
处理Web规模的大型数据集应用。假如需要在Web应用中列出用户贴出的最新20条评论,就可以把新发表的评论的ID添加到一个Redis列表中:
LPUSH latest.comments <ID>
将列表裁剪为指定长度,Redis保存最新的5000条评论:
LTRIM latest.comments 0 5000
每次需要获取最新评论的项目范围时,调用一个函数来完成:
FUNCTION get_latest_comments(start,num_items):
id_list = redis.lrange("latest.comments",start,start+num_items-1)
IF id_list.length < num_items
id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
END
RETURN id_list
END
由于上面的最新ID常驻在缓存当中并且一直更新,获取ID的函数会一直询问Redis。在这个过程中并不需要访问数据库,只有在start/count参数超出了这个范围的时候,才需要去访问数据库。
应用系统不需要像传统方式那样“刷新”缓存,Redis实例中的信息永远是一致的。只是在用户需要获取“很远”的数据时才会去访问硬盘上的数据库。
3.“Redis有点像个拥有十八般武艺的四不像, 想要解决所有问题, 却没有完全好地解决掉任何一个问题。”你同意这个说法吗?为什么?
不同意,这可能是使用者对Redis的要求太高了。现在的大型应用系统完全可以使用关系型数据库+ Key-value数据库一起使用,取两者的长处,优势互补。在一些需要大容量数据集的应用中,Redis并不适合,因为它的数据集不会超过系统可用的内存。然而关系型数据库处理起来感到缓慢的任务,却可以通过Redis来优化,或者为应用创建些新的功能。 |