Redis:高性能的Key / value 数据库。
下面简单介绍一下,Redis的安装与使用。
一、Redis 安装
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
二、可执行程序
SRC 目录下:
redis-server: Redis服务器的daemon 启动程序。
redis-cli: Redis命令行操作工具。
redis-benchmark:性能测试工具,测试Redis在你的系统和配置下的读、写性能。
为了方便使用:
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
三、Redis 配置详细
这里,我将配置文件 redis.conf 复制到自己建立的目录下,/usr/local/redis。
编辑文件 redis.conf。
redis.conf 配置文件参数详解:
daemonize:是否以后台daemon方式运行 //建议修改为yes
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
启动redis:
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。
cd /usr/local/redis
cp redis.conf redis7000.conf
cp redis.conf redis7001.conf
cp redis.conf redis7002.conf
cp redis.conf redis7003.conf
对于配置文件 redis7000.conf,需要做以下改动:
daemonize yes //run as a daemon
pidfile /var/run/redis7000.pid //进程pid
port 7000 //端口号
loglevel verbose //记录等级,可选值为(debug、verbose、notice、warning)
logfile stdout //Specify the log file name
dir /data/redis/ //redis数据的存储路径
备注:其他配置文件类似修改。
启动多个redis实例:
redis-server /usr/local/redis/redis7000.conf
redis-server /usr/local/redis/redis7001.conf
redis-server /usr/local/redis/redis7002.conf
redis-server /usr/local/redis/redis7003.conf
至此,多节点配置成功!五、Redis数据存储
redis 的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。
save seconds updates:在指定时间内,达到多少次更新操作时,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
appendonly yes/no:是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。
因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。
appendfsync no/always/everysec:no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。
六、Redis的主从配置:
redis 支持 master-slave 的主从配置。配置方法:在 从机的配置文件中修改 slaveof 参数为 主机的 ip 和 port 即可。
内存配置:
如果内存情况比较紧张的话,需要设定内核参数:
echo 1 > /proc/sys/vm/overcommit_memory
参数含义:
指定了内核针对内存分配的策略,其值可以是0、1、2。
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2:表示内核允许分配超过所有物理内存和交换空间总和的内存
七、一些其他工具
1、PHP中,操作redis,使用 phpredis,这是一个PHP扩展。
安装步骤详见:猛击这里
2、PHP在面对大流量、高并发情况下,很容易崩溃,故我们需要找软件替代之,推荐使用 Webdis。
安装步骤详见:猛击这里