Redis:高性能的Key / value 数据库。

下面简单介绍一下,Redis的安装与使用。


一、Redis 安装

wget http://download.redis.io/redis-stable.tar.gztar xvzf redis-stable.tar.gz
cd redis-stable
make

二、可执行程序


SRC 目录下:

[plain]view plaincopyprint?

  1. redis-server:   Redis服务器的daemon 启动程序。

  2. redis-cli:      Redis命令行操作工具。

  3. redis-benchmark:性能测试工具,测试Redis在你的系统和配置下的读、写性能。


为了方便使用:

[plain]view plaincopyprint?

  1. cp redis-server /usr/local/bin/

  2. cp redis-cli /usr/local/bin/


三、Redis 配置详细

这里,我将配置文件 redis.conf 复制到自己建立的目录下,/usr/local/redis

编辑文件 redis.conf

redis.conf 配置文件参数详解:

daemonize:是否以后台daemon方式运行 //建议修改为yespidfile:pid文件位置port:监听的端口号timeout:请求超时时间loglevel:log信息级别logfile:log文件位置databases:开启数据库的数量save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。rdbcompression:是否使用压缩dbfilename:数据快照文件名(只是文件名,不包括目录)dir:数据快照的保存目录(这个是目录)appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

启动redis

[plain]view plaincopyprint?

  1. redis-server /usr/local/redis/redis.conf

检查Redis是否正常工作:redis-cli ping

成功时返回:PONG


四、配置多个Redis节点(Redis实例)


如果提供的服务面对的用户群是上百万,上千万,而服务器数量有限,那么需要启动多个Redis实例。


具体方法:


比如,一台Redis服务器,分成4个节点,每个节点分配一个端口(7000,7001,7002...),默认端口是6379。


每个节点对应一个Redis配置文件,如: redis7000.conf、redis7001.conf、redis7002.conf、redis7003.conf。


[plain]view plaincopyprint?

  1. cd /usr/local/redis

  2. cp redis.conf redis7000.conf

  3. cp redis.conf redis7001.conf

  4. cp redis.conf redis7002.conf

  5. cp redis.conf redis7003.conf

对于配置文件 redis7000.conf,需要做以下改动:

[plain]view plaincopyprint?

  1. daemonize yes                       //run as a daemon

  2. pidfile /var/run/redis7000.pid      //进程pid

  3. port 7000                           //端口号

  4. loglevel verbose                    //记录等级,可选值为(debug、verbose、notice、warning)

  5. logfile stdout                      //Specify the log file name

  6. dir /data/redis/                    //redis数据的存储路径


备注:其他配置文件类似修改。

启动多个redis实例

[plain]view plaincopyprint?

  1. redis-server /usr/local/redis/redis7000.conf

  2. redis-server /usr/local/redis/redis7001.conf

  3. redis-server /usr/local/redis/redis7002.conf

  4. redis-server /usr/local/redis/redis7003.conf

至此,多节点配置成功!

五、Redis数据存储

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

[plain]view plaincopyprint?

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

  2. appendonly yes/no:是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。

  3. 因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

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


六、Redis的主从配置:

redis 支持 master-slave 的主从配置。配置方法:在从机的配置文件中修改slaveof 参数为主机的 ip 和 port 即可。

内存配置:

如果内存情况比较紧张的话,需要设定内核参数:

[plain]view plaincopyprint?

  1. echo 1 > /proc/sys/vm/overcommit_memory

参数含义:

[plain]view plaincopyprint?

  1. 指定了内核针对内存分配的策略,其值可以是0、1、2。

  2. 0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程

  3. 1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何

  4. 2:表示内核允许分配超过所有物理内存和交换空间总和的内存


七、一些其他工具1、PHP中,操作redis,使用 phpredis,这是一个PHP扩展。
 安装步骤详见:猛击这里

2、PHP在面对大流量、高并发情况下,很容易崩溃,故我们需要找软件替代之,推荐使用 Webdis
  安装步骤详见:猛击这里


?kjerryhe