扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.系统环境:centos7.2 —— x86_64
十余年的志丹网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整志丹建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“志丹网站设计”,“志丹网站推广”以来,每个客户项目都认真落实执行。
[root@salt1 ~]#cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
[root@salt1 ~]#uname -a
Linux salt1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
2.安装redis
先决条件:首先安装epel-release(epel源)
[root@salt1 ~]#yum -y install epel-release
然后安装redis
[root@salt1 ~]#yum -y install redis
[root@salt1 ~]#rpm -q redis
redis-2.8.19-2.el7.x86_64
[root@salt1 ~]#redis-
redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server redis-shutdown
redis-server:redis服务器的daemon启动程序
redis-cli: redis命令行客户端操作工具,当让也可以用telnet根据其纯文本协议来操作;
redis-benchmark:redis性能测试工具,测试redis在你的系统及你的配置下的读写性能;
redis-check-aof:对于更新日志appendonly.conf检查,是否可用,类似检查MySQL binlog的工具;
redis-check-dump:用于本地数据库rdb文件的检查;
3.启动redis服务
先备份一下redis的配置文件(个人习惯,先备份再操作)
[root@salt1 ~]#cp /etc/redis.conf{,.bak}
redis启动时最好指定其配置文件,因为redis几乎所有的控制都在其配置文件;
redis-server : redis服务器的daemon启动程序
/etc/redis.conf : redis的配置文件
& : 后台启动
[root@salt1 ~]#redis-server /etc/redis.conf &
[1] 9462
[root@salt1 ~]#ps -ef | grep redis
root 9462 2767 0 03:59 pts/0 00:00:00 redis-server 127.0.0.1:6379
root 9466 2767 0 03:59 pts/0 00:00:00 grep --color=auto redis
然后再看下日志
[root@salt1 ~]#tail -30 /var/log/redis/redis.log
[9462] 11 Aug 03:59:54.037 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.19 (00000000/0)64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port:6379
| `-._ `._ / _.-' | PID: 9462
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[9462] 11 Aug 03:59:54.038 # Server started, Redis version 2.8.19
[9462] 11 Aug 03:59:54.039 # WARNING overcommit_memory is set to 0!Background save may fail under low memory condition. To fix this issueadd '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.
[9462] 11 Aug 03:59:54.039 # WARNINGyou 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.
[9462] 11 Aug 03:59:54.040 # WARNING:The TCP backlog setting of 511 cannot be enforced because/proc/sys/net/core/somaxconn is set to the lower value of 128.
[9462] 11 Aug 03:59:54.040 * The server is now ready to accept connections on port 6379
×××字体为:问题
红色字体为:解决办法
×××字体解释:
1.后台保存在低内存下可能会失败
vm.overcommit_memory 参数
默认值为0
0:当用户空间请求更多的内存时,内核尝试估算出剩余可用的内存;
1:内核允许超量使用内存,直到用完为止;主要用于科学计算;
2:内核会使用一个绝不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的ram值,50%参数的设定是在overcommit_ratio中设定;
2.启用了THP(页面内存透明化)在你的内核具体解释看 后边的网址,里头解释的更详细http://os.51cto.com/art/201103/249821.htm
3.tcp backlog 设置为511 不能执行,原因是/proc/sys/net/core/somaxconn的值较低
backlog 是网络连接过程中,某种状态的队列长度,如果并发高,那么会导致backlog的队列被占满,服务器就会丢掉传进来的其他连接,然后就会出现客户点连接失败的情形;
http://jingyan.baidu.com/article/84b4f565e60f8560f6da3227.html
所以底下就开始执行对应的操作
注意:蓝色字体为需要注意的地方
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf sysctl -p echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local echo "echo 511 > /proc/sys/net/core/somaxconn" >> /etc/rc.local
下面是一个截图,需要对比的伙伴可以对一下
相信经过上面3行的配置,你的redis不会再报类似的警告了,当然你还需要在redis.conf文件中指定redis允许使用的内存大小(下章介绍),否则你的服务器撑不了两天
4.关闭redis服务
1)redis-shutdown #默认会保存后关闭
2)redis-cli shutdown save #
5.连接redis
[root@salt1 ~]#redis-cli
127.0.0.1:6379>
6.简单操作
127.0.0.1:6379> set id 001 #创建key-vlaue
OK
127.0.0.1:6379>get id #查找key
"001"
127.0.0.1:6379> del id #删除key
(integer) 1
127.0.0.1:6379> get id
(nil)
127.0.0.1:6379> exists id #查询id是否存在
(integer) 1
127.0.0.1:6379> del id
(integer) 1
127.0.0.1:6379> exists id
(integer) 0
127.0.0.1:6379> keys * #获取所有key
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> keys * #获取所有key
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> dbsize #获取所有key-value数
(integer) 3
redis默认有16个库,但是无法查看到(库的多少可以在redis.conf中配置)
127.0.0.1:6379> select 1 #切换到第二个库(从0开始数)
OK
127.0.0.1:6379[1]>keys *
(empty list or set)
127.0.0.1:6379[1]> set name 123
OK
127.0.0.1:6379[1]> keys *
1) "name"
127.0.0.1:6379[1]>select 0
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> select 15
OK
127.0.0.1:6379> select 16
(error) ERR invalid DB index
好了redis的安装就先说到这儿了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流