安装环境
操作系统: Centos6.4 x64
安装软件: redis-3.2.9.tar.gz https://pan.baidu.com/s/1CF39SftMF2x42_Ys_ge7Cg
1. 环境优化
做如下优化原因: 解决 redis 启动时报错.
vi /etc/sysctl.conf
在文件末尾加上, 然后保存
- net.core.somaxconn = 2048
- vm.overcommit_memory = 1
运行命令使修改生效
- /sbin/sysctl -p
- vi /etc/rc.local
在文件末尾加上, 然后保存
echo never> /sys/kernel/mm/transparent_hugepage/enabled
重启服务器
修改 somaxconn
该内核参数默认值一般是 128(定义了系统中每一个端口最大的监听队列的长度), 对于负载很大的服务程序来说大大的不够. 一般会将它修改为 2048 或者更大
overcommit_memory 参数说明:
设置内存分配策略(可选, 根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值: 0,1,2.
0, 表示内核将检查是否有足够的可用内存供应用进程使用; 如果有足够的可用内存, 内存申请允许; 否则, 内存申请失败, 并把错误返回给应用进程.
1, 表示内核允许分配所有的物理内存, 而不管当前的内存状态如何.
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
transparent_hugepage
透明大页 (THP) 管理和标准 / 传统大页 (HP) 管理都是操作系统为了减少页表转换消耗的资源而发布的新特性, 虽然 ORACLE 建议利用大页机制来提高数据库的性能, 但是 ORACLE 却同时建议关闭透明大页管理, 在 redis 中建议关闭.
2. 安装步骤
cd 到 redis 安装包所在文件夹
解压
tar -zxvf redis-3.2.9.tar.gz
安装
cd redis-3.2.9
make MALLOC=libc 解决报错问题
安装, 可通过 PREFIX 指定安装目录
make install PREFIX=/usr/local/redis
将源码中的配置文件拷贝到安装目录 bin 文件夹
- cp /usr/local/src/redis-3.2.9/redis.conf /usr/local/redis/bin/
- cp /usr/local/src/redis-3.2.9/sentinel.conf /usr/local/redis/bin/
运行
- cd /usr/local/redis/bin
- ./redis-server redis.conf
停止
- cd /usr/local/redis/bin
- ./redis-cli shutdown
- zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
- zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
- make[1]: *** [adlist.o] Error 1
- make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
- make: *** [all] Error 2
解决办法是:
make MALLOC=libc
3. 纯缓存模式下配置说明(其他模式配置, 后续学习后再更新)
在缓存模式下 Redis 不需要存储数据(数据可以从数据库中得到)
- # 参数, 是否开启保护模式, 默认开启. 要是配置里没有指定 bind 和密码. 开启该参数后, redis 只会本地进行访问, 拒绝外部访问. 要是开启了密码 和 bind, 可以开启. 否则最好关闭, 生产服务器设置为 yes.
- protected-mode yes
- #redis 监听的端口号, 根据需要设置
- port 6379
- # 指定 redis 只接收来自于本机的该 IP 对应网卡的请求, 如果不进行设置, 那么将处理所有请求
- bind 127.0.0.1 #此处需要注意两个 ip 地址只能使用一个生效, 否则会被覆盖掉.
- bind 192.168.0.203
- #requirepass 配置可以让用户使用 AUTH 命令来认证密码, 才能使用其他命令. 这让 redis 可以使用在不受信任的网络中. 为了保持向后的兼容性, 可以注释该命令, 因为大部分用户也不需要认证. 使用 requirepass 的时候需要注意, 因为 redis 太快了, 每秒可以认证 15w 次密码, 简单的密码很容易被攻破, 所以最好使用一个更复杂的密码. requirepass redis
- # 快照配置
- # 注释掉 "save" 这一行配置项就可以让保存数据库功能失效
- # 设置 redis 进行数据库镜像的频率.
- # 900 秒 (15 分钟) 内至少 1 个 key 值改变(则进行数据库保存 -- 持久化)
- # save 900 1
- # 300 秒 (5 分钟) 内至少 10 个 key 值改变(则进行数据库保存 -- 持久化)
- # save 300 10
- # 60 秒 (1 分钟) 内至少 10000 个 key 值改变(则进行数据库保存 -- 持久化) save 300 10 save 60 10000
- # save 60 10000
- # 缓存模式下可通过以下设置关闭 RDB
- save ""
- #redis 配置的最大内存容量. 当内存满了, 需要配合 maxmemory-policy 策略进行处理. 注意 slave 的输出缓冲区是不计算在 maxmemory 内的. 所以为了防止主机内存使用完, 建议设置的 maxmemory 需要小于服务器剩余内存.
- # 当前配置为最大内存 4G, 根据服务器实际需要修改
- maxmemory 4294967296
- # 默认 redis 使用的是 rdb 方式持久化, 这种方式在许多应用中已经足够用了. 但是 redis 如果中途宕机, 会导致可能有几分钟的数据丢失, 根据 save 来策略进行持久化, Append Only File 是另一种持久化方式, 可以提供更好的持久化特性. Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件, 每次启动时 Redis 都会先把这个文件的数据读入内存里, 先忽略 RDB 文件.
- # 缓存模式下可通过以下设置关闭 appendonly
- appendonly no
把 daemonize 设置为 yes 可以后台启动
来源: http://www.jianshu.com/p/2ec1a9c0fd12