一、环境准备:
1、 Linux系统:contOS7.2 (可以用虚拟机环境安装,这边我直接用的LInux系统,版本是contOS7.2 )
2、SSH客户端:putty WinScp
二、下载源码:
三、安装环境准备:
Redis是c语言开发,编译依赖gcc环境,如果没有gcc环境,编译安装gcc:
命令:
sudo yum install gcc-c++
登录上服务器,输入以上命令:
如果已经安装好了,输入命令就会看到以下提示:
接着把刚才下载好的redis安装包用WinScp拖到服务器上,这里我新建了个文件夹用来放Redis的压缩包:
也或者可以在新的文件夹下直接下载redis安装版用一下命令:
sudo wget http://download.redis.io/releases/redis-5.0.0.tar.gz
四 安装和编译:
接着在putty命令行下输入解压和编译命令:
sudo tar xzf redis-5.0.0.tar.gz
cd redis-5.0.0
sudo make
编译好以后:
2、编译完成后,在Src目录下,执行make install命令:
命令:cd src
命令:sudo make install
安装好:
安装后,在Src目录下,有三个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个目录下:
sudo mkdir /home/webdb/redis/redisapply //创建一个目录
sudo cp redis-server /home/webdb/redis/redisapply //将文件复制到目录下
sudo cp redis-benchmark /home/webdb/redis/redisapply
sudo cp redis-cli /home/webdb/redis/redisapply
接着返回到上一级目录,并把redis.conf文件复制到redisapply文件夹里
cd redis/redis-5.0.0 //返回redis-5.0.0目录
sudo cp redis.conf /home/webdb/redis/redisapply
cd /home/webdb/redis/redisapply
启动Redis服务,这种属于前端启动方式,这种启动方式启动以后,不能进行其他操作
./redis-server
然后有可能出现下面这种情况:
三个警告 ,一个是积压设置值太低,一个是因为内存太小所以启动不了,一个是因为启动了THP导致延迟
键盘键 Ctrl + c 退出Redis前端页面,两个警告都是修改/etc/sysctl.conf文件,我这边分开修改了,你们可以一起修改好再生效修改:
sudo vi /etc/sysctl.conf
o //进入编辑状态
增加一行:
net.core.somaxconn= 1024
按Esc退出编辑状态,并输入:wq! 保存退出命令,接着执行命令:
sudo sysctl -p
执行成功,接着继续修改/etc/sysctl.conf文件,改vm.overcommit_memory=1
发现没有vm.overcommit_memory参数,所以只好添加:
vm.overcommit_memory=1
保存退出,然后执行生效命令:
sudo sysctl -p
接着解决第三个警告,禁用THP透明大页 ,以root权限输入以下命令:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
在/etc/rc.d/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
保存退出,然后赋予rc.local文件执行权限:
sudo chmod +x /etc/rc.d/rc.local
最后重启系统 reboot ,以后再检查THP应该就是被禁用了,检查命令:
命令1:cat /sys/kernel/mm/transparent_hugepage/enabled
命令2:cat /sys/kernel/mm/transparent_hugepage/defrag
结果:
参考来自https://blog.youkuaiyun.com/jiangshouzhuang/article/details/50864933
https://www.linuxidc.com/Linux/2016-11/137515.htm
https://blog.youkuaiyun.com/whycold/article/details/21388455
https://blog.youkuaiyun.com/a491857321/article/details/52006376
https://blog.youkuaiyun.com/yuliantao/article/details/78793211
https://www.jianshu.com/p/7ca4b74c92be
https://blog.youkuaiyun.com/kk185800961/article/details/53326465
重新输入启动服务器的命令,可能会出现以下警告:
Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
15133:M 21 Nov 2018 21:06:07.691 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
15133:M 21 Nov 2018 21:06:07.691 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
15133:M 21 Nov 2018 21:06:07.691 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
15133:M 21 Nov 2018 21:06:07.691 # Creating Server TCP listening socket *:6379: bind: Address already in use
我查了一下百度,第一个命令说是命令不对,所以改为带路径的执行命令
./redis-server /home/webdb/redis/redisapply/redis.conf
然后又出现下面那些问题:
32740:C 23 Nov 2018 15:32:04.720 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32740:C 23 Nov 2018 15:32:04.720 # Redis version=5.0.0, bits=64, commit=00000000, modified=0, pid=32740, just started
32740:C 23 Nov 2018 15:32:04.720 # Warning: no config file specified, using the default config. In order to specify a config file use /home/webdb/redis/redisapply/redis-server /path/to/redis.conf
32740:M 23 Nov 2018 15:32:04.721 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
32740:M 23 Nov 2018 15:32:04.721 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
32740:M 23 Nov 2018 15:32:04.721 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
32740:M 23 Nov 2018 15:32:04.721 # Creating Server TCP listening socket *:6379: bind: Address already in use
我又百度了一下资料, 说是6379地址已经在使用,说明redis已经启动了
第一种方法:分三个步骤解决
1、找到该进程;
找到redis-server 的进程 (Process Status)
输入命令:
ps -ef | grep -i redis
进程号为 14504 即为redis服务器
2、杀死该进程;
使用kill 命令
输入命令:
命令:kill -9 14504
再次查看流程,发现已经被停止了:
3、然后重新启动redis服务器。
进入redisapply文件夹输入命令:
./redis-server
这种停止服务方法不是很好,
第二种方法:进入redisapply文件夹目录下输入以下命令:
命令:./redis-cli shutdown
参考来自:https://blog.youkuaiyun.com/guo13313/article/details/70666453?foxhandler=RssReadRenderProcessHandler
如果这里使用停止命令有报错的话请参考我这篇文章:
https://blog.youkuaiyun.com/qq_38000902/article/details/86591401
重启启动redis:
关闭redis前端页面同时停止redis服务:
键盘键 Ctrl + c
由于前端启动方式不能进行其他操作,所以我们要用后端启动方式,后端启动方式首先要编辑redis.conf:
sudo vim redis.conf
找到 daemonize no
把no改为yes并保存退出,接着就可以用后端使用方式
命令:cd /home/webdb/redis/redisapply
命令:./redis-server ./redis.conf
这样就可以进行其他操作了
五、连接客户端:
启动好redis后,接着我们连接它的客户端:
./redis-cli
接着我们测试它是否成功安装,输入ping:
说明已经安装成功了
六、简单操作:
1、增加键值对:
set key value
例如:
2、查找key对应的value:
get key
例如:
3、查找redis所有的key:
keys *
4、删除键值对:
del key
例如:
参考来自慕课网