• 主机连接由虚拟机Linux搭建的redis,一步到胃,直接把坑踩完~


    前言

    最近准备学习一下Redis来做缓存,在选择Redis环境上又犹豫了很久。
    有人推荐购买阿里云的Redis服务器,但是蚊子腿也是肉啊,而且便宜也只是针对新手罢了。
    作为白嫖党,学习阶段一分钱也别想让我掏出来。
    发现windows并不能很好的运行Redis,虽然也提出了一种解决方案(即WSL),但是WSL总的来说,还不成熟,1.0版本发布还没几天(我写这篇文章的时候),并且它不能兼容所有Linux程序。
    因此决定使用虚拟机Ubuntu来完成Redis的环境搭建。

    步骤说明

    1.下载Ubuntu的镜像文件,搭建虚拟机

    这个部分不应该放到Redis这里来说,直接跳过了,如果不清楚可以自行搜索教程。

    2.安装Redis

    原则上来说,这个时候已经可以安装Redis了。
    于是,我去官网看了一下它的Get Started,他的推荐安装方法是从apt下载软件包:

    curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
    
    echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
    
    sudo apt-get update
    sudo apt-get install redis
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    一开始,我还真的就这么做了,结果直接下回来个老古董(貌似是5.3.2版本),后来得知是apt更新太慢,此时最新官网版本都7.0了。

    ps:这都不重要,关键是下回来之后,很多bug,比如它自动启动,还永远无法关掉redis进程。
    甚至于sudo kill 命令也杀不死,马上就自动重启,然后无视配置文件,不管你指定多少次,都是默认启动。
    思来想去也找不到原因,最终心一横,干脆把虚拟机也干碎,remake系统。

    重来之后,决定安装最新版本的Redis,就到官网下载了Redis7.0.tar.gz的版本,准备安装~
    结果发现,源码安装软件还得使用Gcc编译器,又去找了个Gcc编译器的源码。

    然后最让人崩溃的是,安装新版本的Gcc 12.2.0需要c编译器(好家伙,套娃是吧,我有编译器我还安装你干嘛?)

    最后还是屈服于现实,使用了软件包一键操作安装Gcc和make命令

    sudo apt-get install build-essential
    
    • 1

    不管怎么说,接下来直接解压Redis文件,进入Redis7.0的目录下,执行make,进入里面的src文件夹,执行install操作

    make
    cd src
    install
    
    • 1
    • 2
    • 3

    这样虚拟机上Redis安装就基本完成啦,默认的安装路径是/usr/local/redis;
    可以复制一份redis.conf,可以用来当自己的配置文件.

    主机连接虚拟机Redis

    1.写好连接代码

    public class ConnectTest {
        public static void main(String[] args) {
        //我这里用的是Jedis库
            Jedis jedis=new Jedis("172.18.30.67",6379);
            System.out.println(jedis.ping());
    //        jedis.set("userName","音无结弦");
            jedis.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意好虚拟机的ip地址。
    写好基本的测试代码,就可以准备测试了

    2.启动虚拟机Redis,准备测试

    如果你直接测试,大概率你会得到一个这样的报错

    Failed to connect to any host resolved for DNS name.

    这是因为Redis有一个保护模式,默认是不能被远程连接的。
    如果我们需要进行连接,需要修改Redis的配置文件。

    # bind 127.0.0.1 -::1
    protected-mode no
    
    • 1
    • 2

    禁用默认的127.0.0.1的本地地址,同时关闭保护模式(默认为yes)。
    但是完成了这一步,还没有结束……
    这时候你进行连接测试,得到的结果将仍是一个同上的报错。
    原因是主机和虚拟机还没有在网络上真正联通,大概率主机是ping不通虚拟机的。
    需要修改主机与虚拟机的连通方式:
    连通方式
    Vm的设置中默认连通方式是Nat模式,而我们要将其设置为桥接模式,这样主机和虚拟机会处于同一个网段。
    当这样设置之后,我们会发现主机能够ping通虚拟机了。
    ping
    在配置文件目录下启动虚拟机Redis:

    redis-server ./redis.conf
    
    • 1

    这时候进行测试,控制台得到的结果如下:
    success

    NICE!!!

  • 相关阅读:
    额温枪(红外线测温仪)方案产品用途和原理
    边缘检测算法
    高级性能测试系列《18.csv数据文件设置:遇到文件结束符再次循环?遇到文件结束符停止线程?线程共享模式。》...
    二十二,加上各种贴图
    tensor.view().permute()
    技术分享 | 接口自动化测试如何处理 Header cookie
    GDAL库学习
    【考研】数据结构考点——归并排序
    全志R128休眠流程前期卡住问题定位思路
    (数据科学学习手札135)tenacity:Python中最强大的错误重试库
  • 原文地址:https://blog.csdn.net/highlighters/article/details/128004952