JAVA - Redis的连接

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: java连接linux Redis遇到的问题    昨天在Linux搭建了Redis服务,今天使用java连接测试了一下。要想使用java连接redis服务,就离不开jedis-2.6.1.jar。

java连接linux Redis遇到的问题

   昨天在Linux搭建了Redis服务,今天使用java连接测试了一下。要想使用java连接redis服务,就离不开jedis-2.6.1.jar。使用jedis连接redis十分方便。下面我们测试一下是否连接上redis服务:

package com . coinvs . redis . util;
import redis.clients.jedis.Jedis;
//import redis.clients.jedis.Jedis;
public class RadisDemo {
      public static void main( String [] args) {
     //连接本地的 Redis 服务
     Jedis jedis = new Jedis( "192.168.1.66" , 6379);
     System . out . println( "Connection to server sucessfully");
     //查看服务是否运行
     System . out . println( "Server is running: " + jedis . ping());
    }
}
 
 

如果出现下图,这说明没有连接成功,不过不用担心,这很好解决。

连接redis失败


出现这种错误的原因有以下几种:

  1. redis服务没有开启;
  2. 没有正确输入,ip、端口;
  3. Linux系统防火墙没有关闭;
  4. 防火墙关闭了,但是访问者ip,在redis.conf文件的bind之外。

简单设置一下,应该就可以连接上了!

下面我们简单说一下,jedis API的使用:

  1.redis存储字符串
//   @Test
    public void testString() {
        //-----添加数据----------
        jedis . set( "name" , "往往"); //向key-->name中放入了value--xinxin
        System . out . println( jedis . get( "name")); //执行结果:xinxin
        jedis . append( "name" , " is my lover"); //拼接
        System . out . println( jedis . get( "name"));
        jedis . del( "name");   //删除某个键
        System . out . println( jedis . get( "name"));
        //设置多个键值对
        jedis . mset( "name" , "liuling" , "age" , "23" , "qq" , "476777XXX");
        System . out . println( jedis . get( "age"));
        jedis . incr( "age"); //进行加1操作
        System . out . println( jedis . get( "age"));
        System . out . println( jedis . get( "name") + "-" + jedis . get( "age") + "-" + jedis . get( "qq"));
    }
 
 
  2.redis操作Map
//    @Test
    public void testMap() {
        //-----添加数据----------
        Map < String , String > map = new HashMap < String , String >();
        map . put( "name" , "xinxin");
        map . put( "age" , "22");
        map . put( "qq" , "123456");
        jedis . hmset( "user" , map);
        //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
        //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
        List < String > rsmap = jedis . hmget( "user" , "name" , "age" , "qq");
        System . out . println( rsmap);
        //删除map中的某个键值
        jedis . hdel( "user" , "age");
        System . out . println( jedis . hmget( "user" , "age")); //因为删除了,所以返回的是null
        System . out . println( jedis . hlen( "user")); //返回key为user的键中存放的值的个数2
        System . out . println( jedis . exists( "user")); //是否存在key为user的记录 返回true
        System . out . println( jedis . hkeys( "user")); //返回map对象中的所有key
        System . out . println( jedis . hvals( "user")); //返回map对象中的所有value
        Iterator < String > iter = jedis . hkeys( "user" ). iterator();
        while ( iter . hasNext ()){
            String key = iter . next();
            System . out . println( key + ":" + jedis . hmget( "user" , key));
        }
    }
  3.jedis操作List
//    @Test
    public void testList (){
        //开始前,先移除所有的内容
        jedis . del( "java framework");
        System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
        //先向key java framework中存放三条数据
        jedis . lpush( "java framework" , "spring");
        jedis . lpush( "java framework" , "struts");
        jedis . lpush( "java framework" , "hibernate");
        //再取出所有数据jedis.lrange是按范围取出,
        // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
        System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
        jedis . del( "java framework");
        jedis . rpush( "java framework" , "spring");
        jedis . rpush( "java framework" , "struts");
        jedis . rpush( "java framework" , "hibernate");
        System . out . println( jedis . lrange( "java framework" , 0 ,- 1));
    }
 
 
  4. jedis操作Set
//    @Test
    public void testSet (){
        jedis . del( "user");
        //添加
        jedis . sadd( "user" , "liuling");
        jedis . sadd( "user" , "xinxin");
        jedis . sadd( "user" , "ling");
        jedis . sadd( "user" , "zhangxinxin");
        jedis . sadd( "user" , "who");
        //移除noname
        jedis . srem( "user" , "who");
        System . out . println( jedis . smembers( "user")); //获取所有加入的value
        System . out . println( jedis . sismember( "user" , "xinxin")); //判断 who 是否是user集合的元素
        System . out . println( jedis . srandmember( "user")); //随机返回一个user中元素的value
        System . out . println( jedis . scard( "user")); //返回集合的元素个数
    } 

5.jedis 排序

@Test
    public void test() throws InterruptedException {
        //
        //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
        jedis . del( "a"); //先清除数据,再加入数据进行测试
        jedis . rpush( "a" , "1");
        jedis . lpush( "a" , "6");
        jedis . lpush( "a" , "3");
        jedis . lpush( "a" , "9");
        System . out . println( jedis . lrange( "a" , 0 ,- 1)); // [9, 3, 6, 1]
        System . out . println( jedis . sort( "a")); //[1, 3, 6, 9]  //输入排序后结果
        System . out . println( jedis . lrange( "a" , 0 ,- 1));
    }
 
简单的学习一下jedis的API,后续还会补充!
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
62 5
|
2月前
|
NoSQL Redis 数据库
Redis 连接
10月更文挑战第19天
31 0
|
19天前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
27天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
35 1
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
47 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
30 1
|
1月前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
46 1
|
2月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
2月前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
34 1
|
2月前
|
SQL 存储 Java
Java中使用ClickHouseDriver连接和基本操作
通过上述步骤,你可以轻松地在Java应用中集成ClickHouse数据库,执行基本的CRUD操作。需要注意的是,实际开发中应当根据实际情况调整数据库连接配置(如URL中的主机、端口、数据库名等),并根据应用需求选择合适的异常处理策略,确保代码的健壮性和资源的有效管理。此外,对于复杂查询和大批量数据处理,建议充分利用ClickHouse的特性(如分布式处理、列式存储优化等),以进一步提升性能。
142 2