1 参考文档
https://redis.io/download
http://www.redis.cn/topics/cluster-tutorial.html
2 安装
# redis安装
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ make
$ sudo make install
3 服务器调优
3.1 WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
说明:tcp内核参数somaxconn默认值一般是128(定义了系统中每一个端口最大的监听队列的长度),对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。
解决方案:在/etc/sysctl.conf中添加 net.core.somaxconn = 2048,在终端执行sudo sysctl -p
$ sudo vi /etc/sysctl.conf
*******************************************************
net.core.somaxconn = 2048
*******************************************************
$ sudo sysctl -p
3.2 WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
说明:内核参数overcommit_memory,内存分配策略,可选值:0、1、2。
# 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
# 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
# 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
解决方案:在/etc/sysctl.conf中添加 vm.overcommit_memory = 1,在终端执行sudo sysctl -p
3.3 WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
解决方案:调整文件/etc/rc.local
$ sudo vi /etc/rc.local
*******************************************************
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
*******************************************************
$ sudo chmod +x /etc/rc.d/rc.local
$ sudo reboot
3.4
4574:M 22 Apr 06:31:47.930 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
4574:M 22 Apr 06:31:47.930 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
4574:M 22 Apr 06:31:47.930 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensat
e for low ulimit. If you need higher maxclients increase 'ulimit -n'
解决方案:OS -> 01CentOS -> 04 Linux增加打开文件/文件描述符的最大数量(FD)
注:当前登录用户为jediz90
$ su root
$ vi /etc/security/limits.conf
jediz90 soft nofile 10240
jediz90 hard nofile 20480
4 常用操作
## 查询key
keys *
## 删除key
del keyname
## 写入记录
set key value
## 读取记录
get key
## 设置过期时间
expire key seconds
## 查看剩余生存时间
ttl key
## 查看时间戳与微秒数
TIME
## 查看当前库中的key数量
DBSIZE
## 后台进程重写AOF(手动执行重写aof,即不达到aof要求也不管)
BGREWRITEAOF
## 后台保存rdb快照(新启进程保存)
BGSAVE
## 保存rdb快照(进程阻塞保存)
SAVE
## 上次保存时间(通过了解上次保存时间,大致了解丢失了多少数据)
LASTSAVE
## 显示服务器全部信息
INFO
## 显示服务器内存信息
info Memory
## 显示状态信息
info Stats
## 断开连接,关闭服务器,不保存数据
SHUTDOWN NOSAVE
## 断开连接,关闭服务器,保存数据
SHUTDOWN SAVE
## FLUSHALL 清空所有db(清除所有库的所有键)
## FLUSHDB 清空当前db(清除当前库的所有键)
## SLOWLOG 显示慢查询
## CONFIG GET 获取配置信息
## CONFIG SET 设置配置信息
## MONITOR 打开控制台
## SYNC 主从同步
## CLIENT LIST 客户端列表
## CLIENT KILL 关闭某个客户端
## CLIENT SETNAME 为客户端设置名字
## CLIENT GETNAME 获取客户端名字