在 centos 7.2 系统上,安装使用redis。了解学习redis功能及特性。
版本: 3.2.4
1.安装:
# yum install redis
2.配置:
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
/etc/systemd/system/redis-sentinel.service.d
/etc/systemd/system/redis-sentinel.service.d/limit.conf
/etc/systemd/system/redis.service.d
/etc/systemd/system/redis.service.d/limit.conf
3.服务:
/usr/lib/systemd/system/redis-sentinel.service
/usr/lib/systemd/system/redis.service
启动服务:
使用现有rpm,会构建一个systemctl控制的服务单元,通过 #service 或 #systemctl 命令控制服务的启动和关闭
#service redis start/stop/status 或
#systemctl status/stop/status redis.service
或使用 redis-sever启动,systemctl的redis服务单元使用的也是 redis-server命令。
#redis-server config 详见 redis-server 命令介绍
#redis-server /etc/redis.conf --daemonize yes
关闭服务:
#service redis stop
或
#redis-cli shutdown
4.日志:
/var/log/redis/redis.log
5.dump数据
根据配置文件中的设置,redis定期保存内存数据到磁盘。
缺省文件名:dump.rdb
缺省路径: /var/log/redis
5.命令:
/usr/bin/redis-benchmark 性能测试工具
/usr/bin/redis-check-aof aof文件检测和修复工具 Redis AOF file checker and repairer
/usr/bin/redis-check-rdb rdb文件检测器
/usr/bin/redis-cli 客户端操作
/usr/bin/redis-sentinel Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。是redis-server的一个链接,带有--sentionel 选项。 symbolic link to `redis-server'
/usr/bin/redis-server 启动redis服务
redis-cli
在 ~/.rediscli_history 命令操作历史记录
~/.redisclirc 设置一些选项
6.使用:
持久化
主备
支持的数据容量
7.参考:
http://skly-java.iteye.com/blog/2167400
http://lib.csdn.net/base/redis
8.相关知识:
Transparent Huge Pages (THP) ,linux内核支持。如果使用,或导致redis的延时和内存使用。 通过echo never > /sys/kernel/mm/transparent_hugepage/enabled 命令,关闭 THP。 在 /etc/rc.local 文件中加入关闭命令,以免系统重启,THP功能被打开。
vm.overcommit_memory = 1 在 /etc/sysctl.conf文件中增加后重启或 命令 sysctl vm.overcommit_memory=1, 解决在低内存情况下,失败的情况。
overcommit_memory参数说明:
设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
注意:redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用 的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所 以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)。
/proc/sys/net/core/somaxconn 在centos 7.2上,缺省为128。 redis的配置文件/etc/redis.conf中tcp-backlog缺省为511,导致redis监听端口队列无法达到511. 还受 tcp_max_syn_backlog 的影响。