Redis作者谈Redis应用场景

毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对相似功能的数据库时,把精力放在怎么把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。

下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:

对于对Redis不懂的可以参考redis入门教程:http://blog.haohtml.com/archives/10174

1.取最新N个数据操作

比如典型的取你网站的最新文章,比如通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取

  • 使用LPUSH latest.comments<ID>命令,向list集合中插入数据
  • 插入完成后再用LTRIM latest.comments 0 5000命令使其永远只保存最近5000个ID
  • 然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码)
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

如果你还有不同的筛选纬度,比如某个分类的最新N条,那么你可以再建一个按此分类的List,只存ID的话,Redis是非常高效的。 Continue reading

MongoDB vs Redis vs Tokyo Tyrant

* MongoDB vs Redis vs Tokyo Tyrant
准备对MongoDB, Redis以及Tokyo Tyrant的读写做一个简单的测试,为了进行相对公平的测试,需要了解他们背后的实现机制,下面是一些比较:

存储实现的比较:
* 内存文件映像(Memory-File Mapping) Redis, MongoDB
* 文件 + Cache Tokyo Tyrant
* 内存: Redis, Tokyo Tyrant
Key/Value索引形式:
* B+ Tree : MongoDB, Tokyo Tyrant
* Hash Table: Redis, Tokyo Tyrant
* Fixed Length: Tokyo Tyrant

从上面的比较可以看出,Redis和MongoDB是基于系统内存映像文件,数据能命中在内存的时候读写操作性能应该是非常强的,当然,反过来,如果数据十分分散不能在内存命中,那么内存页的切换开销将是非常可怕的,MongoDB和Redis数据文件不同的是将数据存放在多个文件中,每当上一个存满的时候就会创建新的数据空间文件。鉴于MongoDB 是主要比较对象,而其采用B+Tree进行存储,故TT也使用B+Tree引擎进行比较。 Continue reading

Redis vs Memcached

在用到一个新产品时,我们肯定会做的一件事就是做性能测试。但是你真的会做性能测试吗?说完这句话我开始遥想了一下当年。我当时肯定让我的领导有点失望。

回归正题,今天要说的是一个关于Redis性能测试的争论。

事情起因是一篇叫做Redis vs Memcached的文章,本文作者在听说Redis之后将其和Memcached进行了一组性能对比测试,测试结果Redis完败。然而其测试方法却引起了不小的争执,其博文下的第一篇回复就是Redis作者antirez同学的回复。antirez非常有风度的感谢了他的测试结果,然后指出其测试中的问题。

而后在antirez的一篇博文(On Redis, Memcached, Speed, Benchmarks and The Toilet)中,他指出了一些做性能测试方面的经验,并自己对Redis和Memcached做了性能对比。结果与上面的相反,Redis全胜。这一篇文章好像一个教程一样,让大家别再不懂装懂瞎做性能测试了。

然而此文后两天,antirez又发布了另一篇博文(An update on the Memcached/Redis benchmark),对其上篇文章中的内容进行了补充。

而正如Alex Popescu说的一样,性能测试一定要基于自己的实际情况,用自己的业务数据来进行测试,才是最靠谱的。
MongoDB vs Redis vs Tokyo Tyrant:http://blog.haohtml.com/archives/9995

Redis在Windows,linux平台下的安装配置

为了方便查阅资料,特将网上搜索到的Redis相关安装配置进行归档整理:

window平台Redis安装

下载地址: http://code.google.com/p/servicestack/wiki/RedisWindowsDownload

Redis文件夹有以下几个文件

redis-server.exe:服务程序

redis-check-dump.exe:本地数据库检查

redis-check-aof.exe:更新日志检查

redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).

指定redis的配置文件,如没有指定,则使用默认设置

解压目录:

d:\>redis-server.exe

redis-cli.exe:命令行客户端,测试用.windows下没有redis.conf配置文件.   Continue reading

Redis几个认识误区

此文的作者是新浪微博平台架构师杨卫华(timyang)大师,如果关注了新浪一些牛人微博的同学应该知道,timyang前段时间正在对Redis进行一些研究和测试,也分享出了不少成果。下面一篇文章相信是timyang这段时间对Redis研究的一个总结,澄清了一些认识上的误区,值得一读。

原文链接:http://timyang.net/data/redis-misunderstanding/

前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Service(1)概括的那几个范围,James第一条经验“Design for failure”是所有互联网架构成功的一个关键。互联网系统的工程理论其实非常简单,James paper中内容几乎称不上理论,而是多条实践经验分享,每个公司对这些经验的理解及执行力决定了架构成败。 Continue reading

Redis和memcached的关系和区别

Q1:什么是Redis?

http://code.google.com/p/redis/

一种新型open source NoSQL应用,从协议上看它提供高性能key-value以及集合操作等功能。它不仅仅是个cache产品,同时支持persistent和chain replication。

Q2:Redis与Memcached类似的地方

Redis是最类似Memcached的开源项目,也有很多的client库可供选择。

Q3:Redis与Memcached的区别

功能:

1. 从协议上看,Redis提供更多的数据结构和操作,如set, stack, range操作等。

2. Redis不仅仅是个cache,提供persistent和chain replication,加上#1,可以近似替代Memcached+MySQL

3. Memcached提供binary protocol和sasl协议,ms Redis还没有支持 Continue reading

初试redis,比memcached快10倍速

引用python中国某文章里的一段话:
"Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,
在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。
此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。"
初试redis,从某种意义上讲,memcached已经做的相当不错了。
但经同事介绍,知道了redis,redis的读写速度相当不错,并且可以定时或不定时的将内存中的数据备份到磁盘.真正做到了安全,快捷的目的。
下面我就将我的安装心得写出来,希望解占辉能帮助刚刚接触redis的朋友。
首先获取redis,我一般情况下python中国下载,那里LINUX主流软件基本都有。