虚拟机安装Redis遇到的问题

前言


最近在学习Redis,要安装的时候官网上说Redis官方不支持Windows,只有微软开源团队在维护。所以为了保险起见就还是下个linux版本的。

由于太穷没有服务器就捣鼓了一下很久没用过的VMware,其间遇到了许多问题,再次记录一下。

环境配置


下载Vmware,Centos镜像并安装。

Centos中文站

启动虚拟机

下载radis

wget <http://download.redis.io/releases/redis-4.0.10.tar.gz>

解压到自己想放的目录

mv redis-4.0.10.tar.gz /opt/redis

tar zvf redis-4.0.10.tar.gz

编译

make

编译之后的文件都放在source目录里面,其中重点需要关注的是redis-server和redis-cli,前者是redis服务,后者是redis客户端

启动redis

src/redis-server

打开redis客户端

src/redis-cli

然后就可以做想做的事了,各种命令随便玩儿。。。

Java中连接redis

下载jedis包

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>

写段代码测试一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.test.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;

/**
* @author zhangxingrui
* @create 2018-08-24 14:29
**/
public class Main {

public static void main(String[] args) throws InterruptedException {
String ip = "192.168.233.128";
int port = 6379;
String password = "123456";

new Thread(() -> {
subscriber(ip, port, password);
}, "subscriber").start();

Thread.sleep(2000);

new Thread(() -> {
publisher(ip, port, password);
}, "publisher").start();

}

public static void publisher(String ip, int port, String password){
Jedis jedis = null;
try {
jedis = connectServer(ip, port, password);
jedis.publish("redisChat", "beautiful");
} catch (Exception e){
assert jedis != null;
jedis.close();
}
}

public static void subscriber(String ip, int port, String password){
Jedis jedis = null;
try {
jedis = connectServer(ip, port, password);
jedis.subscribe(new JedisPubSub() {

@Override
public void onMessage(String channel, String message) {
System.out.println(channel + ": " + message);
}

}, "redisChat");
} catch (Exception e){
assert jedis != null;
jedis.close();
}
}

public static Jedis connectServer(String ip, int port, String password){
//连接本地的 Redis 服务
Jedis jedis = new Jedis(ip, port);

//验证密码
jedis.auth(password);

//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());

return jedis;
}

}

可能遇到的问题


我不知道别人怎么样,反正我用虚拟机是遇到了很多问题,其中最大的两个问题是redis安装包编译不过,虚拟机没有网。

redis安装包编译不过

我遇到的情况是jemalloc重载了Linux下的ANSI C的malloc和free函数,解决办法是:

make clean

make MALLOC=libc

还有就是可能没有编译工具gcc,gcc_c++,yum安装一下:

yum install gcc

yum install gcc-c++

虚拟机没有网

我的情况是用的NAT模式(与虚拟机共享主机的IP地址),没有网,然后百度了一下解决了。

参考文章:Vmware虚拟机设置静态IP地址

解决了没有网络问题,我觉得在虚拟机上不方便,就想用XShell连接,ifconfig看下IP,结果。。。特么命令没找到。

于是yum安装

yum install net-tools.x86_64

zhangxingrui wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!