服务器搭建十三一Redis安装和配置

96
十二楼中月
2018.07.02 10:37* 字数 409

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 可以后台启动
Linux使用
Web note ad 1