锋利的Redis

原文链接:http://lgone.com/html/y2010/732.html

文章标题是因为有一本书叫《锋利的JQuery》,当我在研究Redis的时候,突然二者其实在某中意义上是如此相似,纯为应用而生。

先扯几句闲话。

guanlin跟我推荐Redis的时候,我还在研究tokyotyrant/tokyocabinet源码,当时的Redis算不得牛X,网络层居然还用的性能低下的select,所以说实话,我没有看上它。

但是后来Redis的一系列改进及其受到的高度关注(Redis作者antirez被VMware招安),让我不得不承认自己的错误。

这是一篇关于Redis的入门文章,根据我的学习过程书写:

1.安装Redis

redis的安装出奇的简单,这可能也是他风靡的一个原因,让人很容易上手,不像某些东西,编译阶段就能让人完全绝望。

先去官网下载源码:

wget http://redis.googlecode.com/files/redis-1.2.6.tar.gz

(本文结稿时的最新版本)

解压:

tar zxf redis-1.2.6.tar.gz

编译:

需要说明的事,redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可。

cd redis-1.2.6
make

此时会在目录下生成四个可执行文件:redis-benchmarkredis-cliredis-serverredis-stat

这四个文件,加上一个redis.conf就构成了整个redis的最终可用包。

下面你可以把这几个可执行文件和redis.conf文件复制到你所希望的地方,比如我是复制到/usr/local/redis/bin/usr/local/redis/etc 下面的,命令如下:

mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
cp redis-benchmark redis-cli redis-server redis-stat /usr/local/redis/bin
cp redis.conf /usr/local/redis/etc

现在就可以启动redis了,redis只有一个启动参数,就是他的配置文件路径。

cd /usr/local/redis
bin/redis-server etc/redis.conf

注意,默认复制过去的redis.conf文件的daemonize参数为no,所以redis不会在后台运行,这时要测试,我们需要重新开一个终端。修改为yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,如果有需要先修改,默认log信息定向到stdout.

这时你可以打开一个终端进行测试了,配置文件中默认的监听端口是6379,所以我们用telnet进行连接如下:

telnet localhost 6379

回车后即可键入命令。

2.redis数据结构

redis 的作者antirez曾笑称其为一个数据结构服务器(data structures server),我认为这是一个非常准确的表述,redis的所有功能就是将数据以其固有的几种结构保存,并提供给用户操作这几种结构的接口。我们可以想象我们在各种语言中的那些固有数据类型及其操作。

redis目前提供四种数据类型:string,list,setzset(sorted set)。

  • string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
  • list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
  • set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
  • zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。

在官网上给出了所有支持的接口列表,并副副附有详细的介绍,地址:

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

另外,作者还提供了一个非常贴心的web命令行模拟页面,供初学者试用redis,地址:

http://try.redis-db.com/

3.redis数据存储

redis的快速是业内闻名的,但是我想说,这个速度还是有一定水分的,且看下文。

redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

save seconds updatessave配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

appendonly yes/no appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

appendfsync no/always/everysec appendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。

4.redis主从配置

redis支持master-slave的主从配置,配置方法是在从机的配置文件中指定slaveof参数为主机的ip和port即可,原理上来说,是从机请求主机的方式,按照tokyotyrant的做法,是可以实现主-主,主-从等灵活形式的,而redis只能支持主从,不能支持主-主,可能是其同步原理的差异所致。(本人还没有试过将两台机器的slaveof参数互指的情况是否可实现主-主。)

5.redis起步(链接整理)

项目首页,下方是各种语言支持列表:

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

作者在wiki中给出了一个非常好的例子,以使我们可以快速上手,地址:

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

同时作者推荐的另一个教程,地址:

http://labs.alcacoop.it/doku.php?id=articles:redis_land

一个redis爱好者创建的相关问题讨论网站:

http://www.rediscookbook.org/

anyShare据说看到好文章不转的人,服务器容易宕机!
          

无觅相关文章插件,快速提升流量

分类 Redis · tag

  1. Pingback: 锋利的Redis | phone blog

  2. Pingback: zz Redis资料汇总 | 回眸

  3. Pingback: Redis资料汇总专题 | 岭南六少 - 一朵在LAMP架构下挣扎的云

  4. Pingback: Redis资料汇总专题(转) | XYZ'S WORLD

  5. 本人还没有试过将两台机器的slaveof参数互指的情况是否可实现主-主
    不能够实现

  6. Pingback: 蓝色的思念 » Redis入门第一天

  7. Pingback: site

  8. Pingback: this site

  9. Pingback: deals

  10. Pingback: www.cheapcashloans.net

  11. Pingback: SquashRacqueteer http://budgetbandung.com/?p=108 SquashRacqueteer

  12. Pingback: Source

  13. Pingback: personalized koozies

  14. Pingback: Britney Spears & Demi Lovato Dish X Factor Judging Styles In New Promo! | Some nifty news and info

  15. Pingback: First Look: JoJo Gives MTV A Sneak Peek At The ?Demonstrate? Video | The Mike Broemmel Blog

  16. Pingback: ‘Hunger Games’ DVD Viewing Party: Foxface Has Tips! | All sorts of interesting goodies

  17. Pingback: Kirstie Alley Pens Memoir | News, Reviews, and Much More!

  18. Pingback: Redis学习资料整理 - 广州小强技术博客

  19. Pingback: payday loans

  20. Pingback: redis网络资料汇总 | architecture4

  21. Pingback: redis网络资料汇总 - iew3c

  22. Pingback: maillot de foot

  23. Pingback: maillot de football pas cher

  24. Pingback: 果仁分享 » Redis汇总

  25. Pingback: 大数据处理 » Redis资料汇总专题

  26. Pingback: Redis资料汇总专题 – 农夫庄园

  27. Pingback: 使用 NoSQL 数据库分析大规模数据 | Share

  28. Pingback: 最近学习nosql看的一些资料 – 冷门数据库