这篇文章主要讲解了弹簧引导复述,如何实现客户端远程操作,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
在春季启动1。x中默认是能作为客户端,但是在春天Boot2.x后,默认就是生菜
复述的远程连接,默认是不支持的,需要手动开启
修改配置文件:
注释掉困境:127.0.0.1
开启密码校验,去掉requireprass的注释
使用能客户端:
能的GitHub地址:https://github.com/xetorthio/jedis
如何远程连接:
//构造一个能对象 能能=新能(“127.0.0.1");//有密码的话要认证 jedis.auth (“root");//测试是否连接成功 字符串萍=jedis.ping ();//返回pong表示成功 System.out.println (ping);
能中的方法API和复述中的操作数据的命令一致,所以使用起来很方便。
在实际应用中,能实例一般用连接池获取,因为java本来就是多线程的,而能对象不是线程安全的,所以要使用连接池,从连接池中获取能,用完之后再还给连接池。保证他的线程是安全的。
如何创建能连接池
//1。构造一个能连接池 JedisPool池=new JedisPool (“127.0.0.1", 6379);//2 .从连接池中获取一个能连接 能能=pool.getResource ();//3 .测试是否连接成功 字符串萍=jedis.ping ();//返回pong表示成功 System.out.println(平);//4 .归还连接 jedis.close ();
如果第三步,也就是我们的业务代码出问题的话,是无法进行到第四步的,我们可以做一个优化,在业务代码块中尝试赶上给关闭加一个最后,并在最后中判断能不为空的情况下给他归还。这样的话,就可以保证每次都归还能对象了。
但是这种的明显感觉很臃肿,而且约束性不强,因此可以再优化,就是以接口和接口实现的形式去处理,需要调用的时候再去实现这个接口:
创建接口:
公共接口CallJedis { 无效的调用(能能); }
创建接口的实现
公共类复述,{ 私人JedisPool池; 公共复述(){ GenericObjectPoolConfig配置=new GenericObjectPoolConfig ();//连接池最大空闲数 config.setMaxIdle (300);//最大连接数 config.setMaxTotal (1000);//连接最大等待时间,如果是1表示没有限制 config.setMaxWaitMillis (30000);//在空闲时检查有效性 config.setTestOnBorrow(真正的);/* * * 1。复述,地址 * 2。复述,端口 * 3。连接超时时间 * 4。密码 */池=new JedisPool(配置,“192.168.91.128", 6379, 30000,“root"); } 公共空间执行(CallJedis CallJedis) { 试(能能=pool.getResource ()) { callJedis.call(能); } } }
调用接口:
新复述,复述,复述,=(); 复述。execute(能→{ System.out.println (jedis.ping ()); });
使用生菜客户端:
GitHub地址:https://github.com/lettuce-io/lettuce-core
生菜和能比较
能在实现过程中是直接连接复述的,在多个线程之间共享一个能实例,是线程不安全的,如果想在多线程场景下使用能,就得使用连接池,这样,每个线程都有自己的能实例,但是有一个弊端,就是会消耗过多的物理资源。
生菜是线程安全的,因为使用了网状的NIO框架构建。支持同步,异步,以及响应调用,多个线程可以共享一个生菜实例,不用担心多线程的并发问题。
在java中如何使用:
1。添加依赖。
2。测试
//创建连接根是密码,127.0.0.1是服务端地址 RedisClient RedisClient=RedisClient.create(“复述://root@127.0.0.1");//创建连接通道 String> StatefulRedisConnection<字符串;连接=redisClient.connect ();//获取同步调用对象 String> RedisCommands<字符串;同步=connect.sync ();//赋值 sync.set (“name",“zl");//取值 字符串名称=sync.get (“name");//测试 System.out.println(名称); }
看完上述内容,是不是对弹簧引导复述,如何实现客户端远程操作有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。