Redis开启远程连接

这篇具有很好参考价值的文章主要介绍了Redis开启远程连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Redis开启远程连接

  • 1 开启远程连接
  • 2 Jedis连接Redis
  • 3 Jedis优化连接
    • 3.1 Jedis连接池
  • 4 lettuce

1 开启远程连接

redis默认是不支持远程连接,需要手动开启,在redis.conf文件中,找到下方法代码:

#bind 127.0.0.1

这里只允许127.0.0.1登录,注释掉

开启密码校验,去掉requirepass的注析

requirepass password
//设置密码为password(自定义的,随便设)

改完之后,保存退出,启动redis

redis-server redis.conf

2 Jedis连接Redis

首先创建一个maven项目

Jedis的GitHub地址:https://github.com/xetorthio/jedis

项目创建成功后,添加Jedis依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>

创建测试方法

public class MyJedis {
    public static void main(String[] args) {
        //1.构造一个Jedis对象,因为这里使用的默认端口6379,所以不用配置端口,要填的是远程服务器的端口号
        Jedis jedis = new Jedis("127.0.0.1");
        //密码
        jedis.auth("password");
        //测试是否连接成功
        String ping = jedis.ping();
        //返回pong表示成功
        System.out.println(ping);
    }
}

对于Jedis而言,一旦连接上redis服务端,剩下的操作就很简单了

在Jedis中,由于方法的API和Redis的命令高度一致,所以,Jedis中的方法见名知意,直接使用即可

3 Jedis优化连接

3.1 Jedis连接池

在实际应用中,Jedis实例我们一般都是通过连接池来获取,由于Jedis对象不是线程安全的,所以,当我们使用Jdeis对象时,从连接池获取Jedis,使用完成后,再还给连接池。

public class JedisPoolTest {
    public static void main(String[] args) {
        Jedis jedis = null;
        //1.构造一个jedis连接池
        JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
        //2.从连接池中获取一个Jedis连接
        jedis = jedisPool.getResource();
        jedis.auth("password");
        try {
            //3.Jedis操作
            String ping = jedis.ping();
            System.out.println(ping);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //4.归还连接
            if (jedis != null)
                jedis.close();
        }
    }
}

通过finally确保jedis一定被关闭

利用JDK1.7中的try-with-resource特性,可以对上面的代码进行改造:

public class JedisPoolTest {
    public static void main(String[] args) {
        //1.构造一个jedis连接池
        JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
        //2.从连接池中获取一个Jedis连接
        //版本低,可以在Project Structure的Modules的Language level哪里改为8
        try(Jedis jedis = jedisPool.getResource()){
            //3.Jedis操作
            jedis.auth("password");
            String ping = jedis.ping();
            System.out.println(ping+":");
        }
    }
}
  • 版本低,可以在Project Structure的Modules的Language level哪里改为8

增加约束,封装

public interface CallWithJedis {
    void call(Jedis jedis);
}


public class Redis {
    private JedisPool pool;
    public Redis(){
        GenericObjectPoolConfig config=new GenericObjectPoolConfig();
        //连接池最大空闲数
        config.setMaxIdle(300);
        //最大连接数
        config.setMaxTotal(1000);
        //连接最大等待时间,如果是-1表示没有限制
        config.setMaxWaitMillis(30000);
        //空闲时检查有效性
        config.setTestOnBorrow(true);
        /**
         * 1.redis地址
         * 2.redis
         * 3.连接超时时间
         * 4.密码
         */
        pool=new JedisPool(config,"127.0.0.1",6379,30000,"password");
    }
    public void exectu(CallWithJedis callWithJedis){
        try(Jedis jedis=pool.getResource()){
            callWithJedis.call(jedis);
        }
    }
}


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisPoolTest {
    public static void main(String[] args) {
        Redis redis = new Redis();
        redis.exectu(jedis -> {
            System.out.println(jedis.ping());
        });
    }
}



在这里插入代码片

4 lettuce

github:github.com/lettuce-io/lettuce-core

lettuce和Jedis的一个比较

  1. Jedis在实现的过程中是直接连接Reids的,在多个线程之间共享一个Jedis实例,这是线程不安全的,如果想在多线程场景下使用Jedis,就得使用连接池,这样,每个线程都有自己的Jedis实例。(会浪费)
  2. Lettuce基于Netty NIO框架来构建的,所以克服了Jedis中线程不安全的问题,Lettuce支持同步、异步以及响应式调用,多个线程可用共享一个连接实例。

使用Lettuce,首先创建一个普通的maven项目,添加Lettuce依赖

    <dependencies>
        <dependency>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
    </dependencies>

实例:

import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;

public class LettuceTest {
    public static void main(String[] args) {
        RedisClient redisClient = RedisClient.create("redis://password@127.0.0.1");
        StatefulRedisConnection<String, String> connect = redisClient.connect();
        RedisCommands<String, String> sync = connect.sync();
        sync.set("name","java");
        String name=sync.get("name");
        System.out.println(name);
    }
}

这里的密码传递方式,密码直接写下连接地址里面文章来源地址https://www.toymoban.com/news/detail-593968.html

到了这里,关于Redis开启远程连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springBoot连接远程Redis连接失败(已解决)

    问题: 首先,我是先用jedis进行的redis连接,成功连接,没有任何问题,说明redis配置,以及访问地址、端口、密码都是正确的。 我的yml文件配置如下: 但是当我使用springboot里面的redisTemplate进行连接的时候,却发生了报错,报错信息如下 然后我就很奇怪,同样的访问,为什么

    2024年04月17日
    浏览(40)
  • redis远程连接不上解决办法

    问题描述: redis远程服务端运行在192.168.3.90计算机上,客户端计算机(ip:192.168.3.110)通过redsi-cli.exe客户端工具连接时,没有反应,连接不上。 如图所示: 解决步骤: 步骤一:注释掉redis.window.conf文件中的bind属性设置。 如图所示:     步骤二:把protected-mode属性设置no    

    2024年01月21日
    浏览(41)
  • SpringBoot连接远程服务器redis

    进入redis安装地址,我这里安装的是 /usr/local/src/redis-6.2.6 先copy一份配置文件 然后修改配置文件信息 vim redis.conf 启动redis 去云服务器安全组中开放端口 重启防火墙 查看6379的防火墙状态 1、Spring-redis依赖 2、配置redis的信息 3、运行

    2024年01月19日
    浏览(59)
  • Redis学习(一)数据类型、Java中使用redis、缓存概念

    List可以看做是一个双向链表结构,既可以支持正向检索,也可以支持反向检索。 链表的特点是插入和删除效率快,常用来存储有序的、需频繁插入和删除的数据,例如朋友圈点赞列表,评论列表等。 注意:这里的set是无序的! keys:查看符合模板的所有key del:删除一个key,

    2024年02月13日
    浏览(34)
  • Linux安装Redis数据库,实现远程连接

    转发自cpolar内网穿透的文章:公网远程连接Redis数据库【内网穿透】 Redis作为一款高速缓存的key value键值对的数据库,在许许多多的场景中广泛使用,由于是把数据存储在内存中,所以读写效率极高。 下面介绍如何在内网虚拟机的linux中搭建redis并通过cpolar内网穿透实现公网访问

    2024年02月08日
    浏览(47)
  • 【java缓存、redis缓存、guava缓存】java中实现缓存的几种方式

    这种方式可以简单实现本地缓存,但是实际开发中不推荐使用,下面我们来实现一下这种方式。 首先创建一个管理缓存的类 这个类中有一个静态代码块,静态代码块会在类加载时就执行,我们可以在这里完成对缓存的初始化,决定缓存内一开始就有哪些数据 另外我们还可以

    2024年02月16日
    浏览(34)
  • 使用宝塔安装mysql,redis后配置远程连接服务

    1.宝塔面板【软件商店】-【应用搜索】,搜索MySQL,然后点击安装想要的版本,我这边是安装的5.6版   2.安装完后重置数据库管理员密码     3.修改mysql配置 输入【mysql -u root -p】 后回车,输入密码,密码就是第二步重置的密码    4.输入【use mysql;】 5.输入【update user set host =

    2024年02月07日
    浏览(41)
  • Linux centos安装Redis数据库并远程连接

      目录 前言 1. Linux(centos8)安装redis数据库 2. 配置redis数据库 3. 内网穿透 3.1 安装cpolar内网穿透 3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址 4.1 保留一个固定tcp地址 4.2 配置固定TCP地址 4.3 使用固定的tcp地址连接 Redis作为一款高速缓存的key value键值对的数据库,在许许多多的

    2024年02月04日
    浏览(41)
  • Linux下如何开启允许root用户远程登录

    在很多时候,远程登录使用的是用户身份登录,在系统路径下的文件无法通过用户角色直接下载。下载的话,需要将文件移动到当前用户有权限的路径下才能下载,比较麻烦。而另一种下载方法是以root用户的身份登录系统进行原路径下载,但多数SSH为了提高系统安全性, 默

    2024年02月13日
    浏览(48)
  • windows开启远程桌面,防火墙拦截:只允许特定IP远程

    1、进入设置----系统----远程桌面----开启远程桌面  2、进入控制面板----系统和安全----Windows Defender 防火墙----开启防火墙----右上角 高级设置----入站规则----找到端口3389(3389为远程端口)----作用域----远程IP上添加允许访问的IP  3、配置完毕

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包