• 主机连接由虚拟机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!!!

  • 相关阅读:
    Swagger学习
    机器学习 | 模型评估和选择 各种评估指标总结——错误率精度-查准率查全率-真正例率假正例率 PR曲线ROC曲线
    C++代码 让CPU使用率变成波形
    SpringSecurity Oauth2实战 - 07 整合Redis延长页面自动退出登录时间
    【实例分割】论文详解YOLACT:Real-time Instance Segmentation
    安装torch113、cuda116并运行demo【Transformer】
    【Java】设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
    VK1621是段码LCD液晶显示屏驱动IC,具省电模式,替代市面上1621 LQFP44/48、SSOP48、DICE,最大支持32*4点阵 FAE技术支持
    Controller接收Postman的raw参数时,属性值全部为空
    网易游戏学院系列——书籍《游戏设计》【笔记】
  • 原文地址:https://blog.csdn.net/highlighters/article/details/128004952