今天安装了CentOS7 1708 在安装redis时报错 make[1]: *** [adlist.o] 错误 127
因为Redis是C实现的,需要gcc来进行编译,所以原因是系统未安装gcc,按顺序执行:
yum install cpp yum install binutils yum install glibc yum install glibc-kernheaders yum install glibc-common yum install glibc-devel yum install gcc yum install make 因为gcc依赖很多,都执行一下,以防万一
然后执行安装redis OK:
一、软件安装
1、进入官网下载Redis4.0.8
官网也附有安装教程。
shell>wget http://download.redis.io/releases/redis-4.0.2.tar.gz
1.1 方式一
去 Redis 官网下载最新稳定版,上传到 Linux:https://redis.io/download
1.2 方式二
使用 wget 命令获取
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2、解压压缩文件
shell>tar -zxvf redis-4.0.8.tar.gz
3、进入redis-4.0.8目录 使用make命令编译redis
shell>cd /edis-4.0.8
shell>make
等几分钟,过程可能比较慢,正常情况下是不会报错的,如下图:
4、在redis-4.0.8目录中 使用makePREFIX=/usr/local/redis/redis-4.0.8 install命令安装redis到/usr/local/redis/redis-4.0.8中
shell>make PREFIX=/usr/local/redis/redis-4.0.8 install
二、修改配置
前台启动:./redis-server
后台启动:复制redis.conf (在/redis-4.0.8源码下,就是解压的那个文件夹)到redis的安装目录(就是你那个bin里),修改redis.conf中的 daemonize yes ,执行下边的命令就启动了,下一条是关闭命令
shell>cd /usr/local/webtools/redis-4.0.8
shell>cp redis.conf /usr/local/redis/redis-4.0.8/bin/
shell>cd /usr/local/redis/redis-4.0.8/bin/
shell>用vi工具打开redis-4.0.8目录下的redis.conf配置文件:
vi redis.config
1、.设置redis可以一直在后台运行,以守护进程方式运行,即关闭SSH工具程序也在运行。
daemonize no 改成 daemonize yes
2、默认的话redis-server启动时会在当前目录生成或读取dump.rdb,可以指定生成的路径
dir ./ 改成 dir /usr/local/redis/
3、指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly no 改成 appendonly yes
4、.默认redis是只能内网127.0.0.0访问,如果想外网访问需要修改绑定的地址
bind 127.0.0.1 改成 bind 0.0.0.0 (别忘了在阿里云后台给6379增加安全组配置)
改成任何IP都能访问的,当然这里也可以绑定单独的IP
5、修改保护模式,不修改保护模式也是只能内网访问的
protected-mode yes 改成 protected-mode no
6.设置密码
将”#requirepass foobared“ 取掉注释改成 requirepass 123
保存文件
第四、启动测试
启动redis服务
shell>./redis-server ./redis.conf
验证服务是否启动:
shell>ps aux|grep redis
结果如下:
说明启动成功了。
关闭启动的窗口,重新打开个命令终端,然后测试是否在后台运行,结果和上面一样,说明不论SSH是否关闭,redis服务都会在后台以守护进程方式运行。
用redis-cli测试内网
运行命令,连接客户端:
shell>./redis-cli -a xxx
备注:redis-cli -h 实例连接地址 -a 密码
用java测试外网(阿里云防火墙规则添加端口6379)
创建一个java项目,导入jedis包,新new一个RedisConnectTest.java类,代码如下:
package test.service;
import redis.clients.jedis.Jedis;
public class RedisConnectTest {
/**
* @author liu
* @version 创建时间:2018年3月17日22:13:50
* @ClassName 类名称
* @Description 类描述
*/
public static void main(String[]args) {
try {
String host = "www.iotworld.vip";//控制台显示访问IP地址
int port = xxx;
Jedis jedis = new Jedis(host,port);
// 鉴权信息
jedis.auth("xxxxx.");//password
String key = "redis_test";
String value = "Hello-aliyun-redis";
// select db 默认为0,共有16个
jedis.select(1);
// set一个key
jedis.set(key, value);
System.out.println("SetKey " + key + " Value: " + value);
// get 设置进去的key
String getvalue = jedis.get(key);
System.out.println("GetKey " + key + " ReturnValue: " + getvalue);
jedis.quit();
jedis.close();
} catch (Exception e) {
e.printStackTrace();
}
运行结果如下:
Set Key redis_test Value: Hello-aliyun-redis
Get Key redis_test ReturnValue: Hello-aliyun-redis
说明连接并存储成功了,并且取数据也成功了。