读书人

rails3项目解析之三redis

发布时间: 2012-10-30 16:13:36 作者: rapoo

rails3项目解析之3——redis
rails3项目解析之1——系统架构
rails3项目解析之2——rails基础


在国家的正确指引和坚强领导下,在国内经济突飞猛进一片光明的大好形势下,随着互联网的飞速发展,即使是普通互联网应用的用户数量也呈线性上升趋势,更不用说国外那些大型的广受欢迎的诸多“并不存在”的网站们指数级的用户增长。而且网站内的数据关系也随着SNS等应用的兴起发生了很大的变化。传统的关系型数据库已经慢慢地对这些新时代的新特性显得有些力不从心。如何提高单台数据库服务器负载能力,如何更高效更迅速地处理简单类型的数据关系,成了摆在我们面前的亟待解决的问题。

时隔多年又过了把写论文的瘾。下面说点有用的。

当初在设计这个项目的架构时,就准备引入nosql作为主要组成部分。一是从网站的预期流量上,单台mysql要撑起来还真有点费劲,mysql的扩展方案又不是很优雅方便。二是当前凡是有点活力的场所,张口闭口都是nosql,现在搞个项目要是还在跟sql语句死抠较劲,你都不好意思跟人家打招呼。所以经过一番论证和可行性分析,最终我们选择了redis和mongodb来各负其责。这次先简单说说redis。

1、选择理由

喜欢一个人是没有理由的,但选择一个组件,却一定是要有理由的。这关系到日(名词)后有没有扩展空间,在项目中好不好用,大家写起代码来会不会暗地里大骂当初那个选型的人。

redis是一款内存型的key-value数据库,它允许把所有的数据都保留在内存里,保证了数据存取的速度。又有持久化和日志机制,保证了断电时数据的完整性。redis支持hash、list、(sorted) set等数据类型,作为绝大多数的应用来说已经足够。而且redis的更新非常快,开发者们都很敬业努力,这也是选择一个开源组件的很重要的一个方面。

因为这个系列不是专门讲解redis开发的,所以更详细的使用特性和开发手册,请微移莲步至官方网站。

2、适用场景

项目中使用redis的场景主要有以下几处:

2.1 rails默认缓存。凡是rails需要使用缓存的地方,比如页面片段缓存等,都会用到指定的默认缓存系统。这个配置起来很简单,只需要一行代码即可,而且也不必关心rails具体在redis上是怎么实现的,自有redis_store来完成这一切。

  

读书人网 >网络基础

热点推荐