最近在阿里云服务器上安装了redis,这个过程中遇到了比较头疼的问题,拿来这里和大家分享一下哈
这里安装的是redis官方的最新版本redis-3.0.3
Linux安装用.tar.gz包吧,具体可以到http://www.redis.cn/download.html 这里下载
以下是编译安装步骤
解压包
#tar -zxf redis-3.0.3.tar.gz
创建安装目录[可选]
#mkdir [-p] /usr/local/redis
进入redis-3.0.3目录
#cd redis-3.0.3
#make
#make test
安装到指定安装目录(注意,若不指定PREFIX安装目录将会出现问题,下面解释)
#make PREFIX=/usr/local/redis install
这个时候再进入/usr/local/redis中会发现多了一个bin目录,里面生成多个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof 、redis-check-dump,它们的作用如下:
redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在当前系统下的读写性能
redis-check-aof:数据修复
redis-check-dump:检查导出工具
创建配置文件文件夹
#mkdir /usr/local/redis/etc
进入redis-3.0.3目录,复制redis.conf文件到/usr/local/redis/etc
#cp redis.conf /usr/local/redis/etc/redis.conf
修改系统配置文件,执行命令
a) echo vm.overcommit_memory=1 >> /etc/sysctl.conf
b) sysctl vm.overcommit_memory=1 或执行echo vm.overcommit_memory=1 >>/proc/sys/vm/overcommit_memory
使用数字含义:
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2,表示内核允许分配超过所有物理内存和交换空间总和的内存
配置系统环境变量PATH
#vi /etc/profile
将export PATH=$PATH:/usr/local/redis/bin 写入文件末尾
若想立即生效(系统重启自动生效),则可以进入/etc目录中执行 ./profile,若没办法执行,一般用chmod将profile的权限设置为777即可
启动redis(此处指定配置文件),若没有添加redis执行文件所在目录,可进入/usr/local/redis/bin 目录执行./redis-server /usr/local/redis/etc/redis.conf 也可启动redis
#redis-server /usr/local/redis/etc/redis.conf
运行redis命令操作工具redis-cli,若顺利连接,这redis开启成功,也可以使用ps -ef | grep redis 查看redis进程是否存在
#redis-cli
出现“127.0.0.1:6379>”说明启动成功,祝贺你,可以使用redis了
当然,我安装的过程断断续续持续了两天的时间,主要遇到这个问题
安装的时候没有指定PREFIX安装目录,所以redis的可执行文件(redis-server等)被默认安装到了/usr/local/bin 目录下了,这时候无论怎么放配置文件,执行 redis-server /usr/local/redis/etc/redis.conf
时都不成功(用ps -ef | grep redis 查看redis进程根本就没开启),直接执行redis-server 警告“Warning:
no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf”,这很正常,说明我们没有指定配置文件,redis选择了默认的配置文件。但是这怎么行啊,我们可是要自己配置这个文件的呢!后来跟一个朋友在讨论的过程中发现了这个问题,所以才得以解脱,配置文件才能加载成功。所以大家安装的时候请注意指定PREFIX!!!这个问题的解决也得益于我之前编译安装PHP的经验!!!因此建议大家多做,多尝试,没有解决不了的问题。
关于redis的使用教程,这里不再赘述,网上又很多教程,可以自行搜索吸收。