Home >Database >Mysql Tutorial >Redis安装与配置

Redis安装与配置

WBOY
WBOYOriginal
2016-06-07 16:38:07890browse

安装Redis 1.下载稳定版本 cd /tmphttp://download.redis.io/releases/redis-2.8.7.tar.gz 2.解压和安装: $ tar -zxf redis-2.8.7.tar.gz$ mv ./redis-2.8.7 /opt/redis$ cd /opt/redis$ make 3.拷贝文件 cp redis.conf /etc/ 这个文件时redis启动的配置文

安装Redis

1.下载稳定版本

<code class="language-text">cd /tmp
http://download.redis.io/releases/redis-2.8.7.tar.gz
</code>

2.解压和安装:

<code class="language-text">$ tar -zxf redis-2.8.7.tar.gz
$ mv ./redis-2.8.7 /opt/redis
$ cd /opt/redis
$ make
</code>

3.拷贝文件

<code class="language-text">cp redis.conf /etc/ 这个文件时redis启动的配置文件
cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行
</code>

4.设置内存分配策略(可选,根据服务器的实际情况进行设置)

<code class="language-text">/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
</code>

值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)

5.开启redis端口

<code class="language-text">修改防火墙配置文件
vi /etc/sysconfig/iptables  
加入端口配置
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT  
重新加载规则
service iptables restart   
</code>

6.启动redis服务

<code class="language-text">$ redis-server /etc/redis.conf
查看进程,确认redis已经启动
ps -ef | grep redis
</code>

如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程

<code class="language-text"># By default Redis does not run as a daemon. Use 'yes' if you need it.  
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.  
daemonize yes  
</code>

7.测试redis

<code class="language-text">$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
</code>

8.关闭redis服务

<code class="language-text">redis-cli shutdown  
</code>

redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定 强制备份数据到磁盘,使用如下命令

<code class="language-text">redis-cli save 或者 redis-cli -p 6380 save(指定端口)
</code>

生成的文件有下面几种

redis-server.exe 服务程序

redis.conf redis配置文件

redis-cli.exe 命令行客户端,测试用

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

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

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

配置Redis

1.配置Redis作为 Linux 服务随机启动

<code class="language-text">vi /etc/rc.local, 使用vi编辑器打开随机启动配置文件,并在其中加入代码。
</code>

2.系统内存使用

<code class="language-text">/etc/sysctl.conf 添加  vm.overcommit_memory=1 刷新配置使之生效  
sysctl vm.overcommit_memory=1  
</code>

补充介绍:
redis配置文件编辑 redis.conf配置文件(/etc/redis.conf),按需求做出适当调整 使用./redis-server redis.conf 作为启动方式

<code class="language-text">daemonize是否以后台进程运行,默认为no
pidfile如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
bind绑定主机IP,默认值为127.0.0.1(注释)
port 监听端口,默认为6379
timeout超时时间,默认为300(秒)
loglevel日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
logfile日志记录方式,默认值为stdout
databases可用数据库数,默认值为16,默认数据库为0
save<seconds><changes>指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
save 900 1  900秒(15分钟)内至少有1个key被改变
save 300 10  300秒(5分钟)内至少有300个key被改变
save 60 10000  60秒内至少有10000个key被改变
rdbcompression存储至本地数据库时是否压缩数据,默认为yes
dbfilename本地数据库文件名,默认值为dump.rdb
dir 本地数据库存放路径,默认值为./
slaveof<masterip><masterport>当本机为从服务时,设置主服务的IP及端口(注释)
masterauth<master-password>当本机为从服务时,设置主服务的连接密码(注释)
requirepass连接密码(注释)
maxclients最大客户端连接数,默认不限制(注释)
maxmemory<bytes>设置最大内存,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。(注释)
appendonly是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
appendfilename更新日志文件名,默认值为appendonly.aof(注释)
appendfsync更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。
vm-enabled是否使用虚拟内存,默认值为no
vm-swap-file虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
vm-max-memory将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
</bytes></master-password></masterport></masterip></changes></seconds></code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn