redis是一个高性能的key-value数据库,与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据持久化的写入磁盘或者把修改操作写入追加的记录文件。搭建redis分为单机版和集群版,这里安装的是单机版。文末附有redis安装时的异常报警解决方案。
系统环境:CentOS
一、前期准备
注:安装以下软件需要使用root账号,切换方式
# su root
gcc
安装redis需要先安装安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要使用命令安装:
# yum install gcc-c++
(deepin/debian/Ubuntu系统前期准备应使用sudo apt-get install g++安装C编译环境)
二、安装编译
注意:在下载安装前,建议先建一个放置redis源码包的文件夹。
# mkdir /home/download # cd /home/download
然后我们再执行下列操作:
1.从redis官网下载redis源码包,解压:
# wget http://download.redis.io/releases/redis-5.0.3.tar.gz
下载完成后,解压:
# tar -zxvf redis-5.0.3.tar.gz
然后我们会得到一个名字是redis-5.0.3的文件夹,进入:
# cd redis-5.0.3
2.使用make命令对C++代码进行编译:
# make
3.指定一个redis安装路径,这里我们安装到 /opt/redis 这个路径下面:
# make install PREFIX=/opt/redis
到这里redis的安装就已经完成啦!现在我们研究下如何启动他。
三、启动、使用
1. 首先来到我们刚刚进行安装的redis路径:
# cd /opt/redis/
我们可以看到这个路径下只有一个bin文件夹,这里面就是redis相关的可执行文件,现在进入bin文件夹:
# cd ./bin # ls -s
2. redis-server就是运行服务端的可执行程序,我们可以直接运行去启动它(前台运行模式):
# ./redis-server
看到这个就证明你的redis已经启动成功了,请注意下面红线框中的警告,我们将在文末解决这个问题。
不过启动虽然是启动了,不知道你有没发现一个问题——
直接启动需要一直占用着一个终端,如果你使用 ctrl + c 或者关闭了这个终端,redis也就退出了。
那怎么办?
3. 后台模式启动运行redis
使用后台的方式去启动redis需要使用到redis的配置文件啦——redis.conf。
回到下载redis的目录,找到redis.conf文件,并将配置文件复制到安装redis的bin目录下,方便启动时使用。
# cp /home/download/redis-5.0.3/redis.conf ./bin
我们要对这个配置文件做一些修改,所以我们打开这个配置文件:
# vim ./redis.conf
找到 daemonize no 这段话,将 no 改为 yes。
不会使用vim编辑器的朋友,千万不要乱按,直接用键盘将光标移动到daemonize no附近,然后按键盘上的 “i” 键可以进入插入编辑模式,然后使用退格键删掉 no 并输入 yes。完成后,按一下键盘上的 “Esc” 键退出插入编辑模式,此时,再输入 “:wq” 回车即可保存编辑。
注:如果一不小心改乱了,直接按键盘上的“Esc”键,后输入“q”即可不保存退出!
4. 改好后,我们使用指定配置文件的方式启动redis,即:
# ./redis-server redis.conf
出现如下信息即为正常(如果没有任何信息出现没有报错也可为正常)。
5. 使用redis数据库
我们可以通过redis自带的客户端进行redis数据库的连接,即本目录下的redis-cli文件
命令示例:redis-cli -p 端口号 -h ip地址 <-c>连接集群
这里使用的是本机的redis,所以直接——
# ./redis-cli
这样就直接连接上了我们刚刚安装的默认端口号为6379、默认地址为127.0.0.1的本机redis数据库!简不简单?
几条简单的redis命令测试一下:
查询数据库中所有的key > keys * ping一下redis数据库验证连接是否正常(如果正常redis会返回PONG,可以玩一年!超有意思!) > ping 添加一个key为 "jio",value为3000的数据 > set jio 3000 根据key获取这个数据 > get jio 将key的value值加1(放在阅读量统计上超级合适有木有?) > incr jio 将key的value值减1 > decr jio 根据key删掉这条数据 > del jio
按键盘上的ctrl + c 即可退出客户端。
操作很简单!
好了,安装到这里就结束了!
通常来说,redis没有关闭的需求,但是我们仍可以通过杀进程的方式去关闭redis
首先获取redis的进程号:
# ps aux | grep redis
看到没,红线里的 30016 就是redis的进程号了,使用kill命令搞死他!!
# kill -s 9 30016
附:redis启动报警解决
先上解决方案,然后是作者内心OS,问题解决了点个赞就可以See you tomorrow啦~
1. 解决:修改配置文件
# vim /etc/sysctl.conf
将下面这个加进去,里面的配置项不多,可以对照一下,如果已经有了就进行修改:
net.core.somaxconn=1024 vm.overcommit_memory=1
保存退出,然后执行 sysctl -p 使配置文件生效
# sysctl -p
再修改配置文件:
# vim /etc/rc.local
把这句话添加进去:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
之后保存退出,重启计算机,如果不想重启计算机,可以像我这样执行这个命令:
# source /etc/rc.local
再运行——
# ./redis-server
完美解决!
附2:问题都解决了,以下是废话,有问题可以留言下面
如果我们仔细看一下以上的三个警报(WARNING),我想我们可以去蛋蛋的理解下以上警报的原因:
1. 第一个警报
下面一句话来自一位大佬的博客https://www.cnblogs.com/faunjoe88/p/7158484.html:
这句警报的翻译大概就是:对一个高负载的环境来说tcp设置128这个值,太小了。 这是我的理解,具体的还需到官网理解。然后我们可以手动设置,或者设置永久值.
所以我们可以通过直接修改配置文件解决,将 net.core.somaxconn=1024 添加进去,很好理解吧~就是因为128太小了改成1024就成了!
2. 第二个警报
那位大佬的博客没有提供解决方案……
本着一颗求知向上的心,那我们就自己好好的研究一下以下这句警报的翻译:
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
上面的翻译是:警告 overcommit_memory 被设置为了 0! 后台保存可能会失败在低memory条件下。
然后重点来了:
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.
聪明的人一眼就看懂了,原来这句话本身就提供了解决方案~~~你看懂没?
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.
聪明的人又看出了其中的解决方案!
解决方式就在这句话里: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.
嗯,那么——就酱