Redis5.0.8_01 安装

( 后续所用redis版本均为 redis 5.0.8 )

Redis 特性
速度快:所有数据都放在内存中,使用C语言实现,    使用单线程架构

多种数据结构:它有string hash list set zset geo 等多种数据结构。

多功能丰富:提供了键过期功能,可以实现缓存。

简单稳定:源码少,3.0以后,代码5万行左右,单线程,使得redis服务器处理模型变得简单,不依赖系统中的类库

支持的客户端语言多:java php python c c++ Nodejs

数据持久化

主从复制

高可用和分布式
==================================

Redis 应用场景:
1、缓存 --------- 键过期时间
      缓存 session 会话,优惠券过期
      缓存用户信息,找不到再去mysql 查,查到然后回写到redis
2、排行榜 ------- 列表 & 有序集合
      热度排名排行榜
      发布时间排行榜
3、计数器应用----- 天然计数器
      帖子浏览数,视频播放数,评论留言数,商品浏览数
4、社交网络 ----- 集合
      兴趣爱好,广告投放,粉丝,共同好友,推送,打标签
5、消息队列系统------发布订阅
      配合 elk 实现日志收集

Redis 安装
目录规划:
 redis:下载目录 /data/soft
 安装目:/usr/local/redis_cluster/redis_{port}/{conf,logs,pid}

 数据目录:/data/redis_cluster/redis_{port}/redis_{port}.rdb ##持久化文件

运维脚本:/root/scripts/redis_shell.sh

mkdir -p /data/soft
mkdir -p /usr/local/redis_cluster/redis_6379/{conf,logs,pid}
mkdir -p /data/redis_cluster/redis_6379

cd /data/soft/
wget http://download.redis.io/releases/redis-5.0.8.tar.gz

tar zxf redis-5.0.8.tar.gz -C /usr/local/redis_cluster/

cd /usr/local/redis_cluster/

ln -s redis-5.0.8 redis

cd redis ##已经预编译了,直接make make install

make ## 编译并生成二进制命令

make install ## 把 生成的命令复制到/usr/local/bin下面






Redis 配置文件:
cd /usr/local/redis_cluster/redis/utils

./install_server.sh ##这个脚本,可以生成配置文件,官方最全的配置文件

简易redis配置文件:
cd /usr/local/redis_cluster/redis_6379/conf

vim redis_6379.conf

# 以守护进程模式启动

daemonize yes

# 绑定的主机地址

bind 192.168.189.14

# 监听端口

port 6379

# pid 文件和log文件的保存地址

pidfile /usr/local/redis_cluster/redis_6379/pid/redis_6379.pid

logfile /usr/local/redis_cluster/redis_6379/logs/redis_6379.log

# 设置数据库的数量,默认数据库为0

databases 16

# 指定本地持久化文件的文件名,默认是dump.rdb

dbfilename redis_6379.rdb

# 本地数据库的目录

dir /data/redis_cluster/redis_6379

启动redis
redis-server
/usr/local/redis_cluster/redis_6379/conf/redis_6379.conf

登录命令界面:
redis-cli
关闭redis-server

redis-cli -h 192.168.189.14 shutdown

也可以登录命令界面:直接输入 shutdown

查看日志:
vim /usr/local/redis_cluster/redis_6379/logs/redis_6379.log

有三个警告:
警告1:


解决办法:echo 1024 > /proc/sys/net/core/somaxconn

警告2


echo 1 > /proc/sys/vm/overcommit_memory  或者
echo "vm.overcommit_memory=1" > /etc/sysctl.conf

sysctl -p

+++++++++以上两个警告,也可以直接修改/etc/sysctl.conf文件,在文件末尾加入以下两句:

#redis 服务器的内核参数调整:

echo "net.core.somaxconn= 1024" >>/etc/sysctl.conf

echo "vm.overcommit_memory=1" >>/etc/sysctl.conf

sysctl -p

================================

overcommit_memory参数说明
设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:012

0表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2表示内核允许分配超过所有物理内存和交换空间总和的内存

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

警告3



意思是:你使用的是透明大页(THP),可能导致redis延迟和内存使用问题。redis建议我们关闭THP,以免造成相关问题,并且给出了相应的解决方案

临时解决:root用户执行echo never > /sys/kernel/mm/transparent_hugepage/enabled

永久解决:将上面这句话写入到 /etc/rc.local文件中。

将其写入/etc/rc.local文件中:

vim /etc/rc.local

if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

fi

chmod +x /etc/rc.d/rc.local

修改完成后要重启redis

redis-cli -h 192.168.189.14 shutdown

redis-server
/usr/local/redis_cluster/redis_6379/conf/redis_6379.conf