从前面的学习,大致了解了redis。
那么在开发过程中,java要操作redis数据库的话,第一步做什么呢?
在这里插入图片描述
当然是连接redis啦~

那么下面就是连接redis的一些较为基础的操作;

一、导入依赖

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>2.9.0</version>
    </dependency>

二、连接Redis

2.1 连接Redis

相较于JDBC或者Mybatis的连接方式,连接redis简单很多

//连接指定的redis
Jedis jedis = new Jedis("主机ip","端口");
//如果有密码则需要下面这一行
jedis.auth("密码");
//查看服务是否运行,运行正常的话返回一个PONG,否则返回一个连接错误
jedis.ping();

如果只是连接本地的地址以及默认端口的话,可以直接使用无参构造函数生成对象即可。
因为Jedis继承了Connection这个类,默认的端口和主机IP就是6379和localhost。
在这里插入图片描述

2.2 数据操作

redis自带操作命令可以参考
Redis入门(一)——了解Redis

2.2.1 String

方法描述
String set(String key, String value)设置 redis 字符串数据
String get(String key)获取存储的字符串数据

2.2.2 list

方法描述
Long lpush(String key, String… strings)将一个或多个值插入到列表头部
Long rpush(String key, String… strings)将一个或多个值插入到列表尾部
List lrange(String key, long start, long end)获取列表指定范围内的元素
String lindex(String key, long index)通过索引获取列表中的元素
Long llen(String key)获取列表长度

2.2.3 hash

方法描述
String hmset(String key, Map<String, String> hash)创建hash表,赋值字段和值
List hmget(String key, String… fields)获取hash表字段值
Map<String, String> hgetAll(String key)获取hash表所有的字段和值
Set hkeys(String key)获取所有字段
Long hlen(String key)获取字段数量
Boolean hexists(String key, String field)判断指定字段是否存在

2.2.4 Set

类似于Java中的set集合,是一种无序的集合,其中的元素没有先后顺序。

方法描述
Long sadd(String key, String… members)对集合添加一个或多个成员
Long scard(String key)获取集合的成员数
Set smembers(String key)获取集合中的成员
Boolean sismember(String key, String member)判断集合是否包含指定成员
Set sinter(String… keys)获取多个集合的交集
Set sunion(String… keys)获取多个集合并集
Set sdiff(String… keys)返回第一个集合与其他集合之间的差异

2.2.5 sorted Set

和集合一样也是 string 类型元素的集合,且不允许重复的成员

方法描述
Long zadd(String key, double score, String member)向有序集合添加一个或多个成员,或者更新已存在成员的分数
Long zcard(String key)获取有序集合的成员数
Long zrank(String key, String member)获取元素对应的索引
Set zrange(String key, long start, long end)获取有序集合指定范围的元素
Long zrem(String key, String… members)移除集合中的一个元素或多个元素

三、示例代码

public static void main(String[] args){
        //连接本地的redis
        Jedis jedis = new Jedis();
        //如果有密码则需要下面这一行
        jedis.auth("密码");
        //查看服务是否运行,运行正常的话返回一个PONG,否则返回一个连接错误
        System.out.println(jedis.ping());

        /*****************String示例*****************/
        //设置字符串数据
        jedis.set("word","helloWorld");
        //读取字符串数据
        System.out.println(jedis.get("word"));
        //删除数据
        jedis.del("word");

        /*****************List示例*****************/
        jedis.lpush("list","google");
        jedis.lpush("list","aLi");
        jedis.rpush("list","Mi");

        List<String> stringList = jedis.lrange("list",0l,-1l);
        for(String str:stringList){
            System.out.println(str);
        }

        /*****************Hash示例*****************/
        HashMap<String,String> map = new HashMap<>();
        map.put("name","tom");
        map.put("age","81");
        jedis.hmset("man",map);
        System.out.println(jedis.hmget("man","name"));
        System.out.println(jedis.hgetAll("man"));
        System.out.println("获取所有字段:"+jedis.hkeys("man"));
        System.out.println("获取字段数量:"+jedis.hlen("man"));
        System.out.println("判断age字段是否存在:"+jedis.hexists("man","age"));

        /*****************Set示例*****************/
        jedis.sadd("set1","1");
        jedis.sadd("set1","2");
        jedis.sadd("set1","1");
        jedis.sadd("set2","1");
        jedis.sadd("set2","4");
        System.out.println("获取集合的成员数"+jedis.scard("set1"));
        System.out.println("获取集合中的成员"+jedis.smembers("set2"));
        System.out.println("判断集合是否包含指定成员"+jedis.sismember("set1","2"));
        System.out.println("获取多个集合的交集"+jedis.sinter("set1","set2"));
        System.out.println("获取多个集合并集"+jedis.sunion("set1","set2"));
        System.out.println("返回第一个集合与其他集合之间的差异"+jedis.sdiff("set1","set2"));

        /*****************sorted Set示例*****************/
        jedis.zadd("set1",1,"a");
        jedis.zadd("set1",3,"b");
        System.out.println("获取有序集合的成员数"+jedis.zcard("set1"));
        System.out.println("获取元素对应的索引"+jedis.zrank("set1","b"));
        System.out.println("获取有序集合指定范围的元素"+jedis.zrange("set1",0,-1));
        System.out.println("移除集合中的一个元素或多个元素"+jedis.zrem("set1","a"));
        jedis.zadd("set1",3,"c");
        System.out.println("获取有序集合指定范围的元素"+jedis.zrange("set1",0,-1));
        jedis.zadd("set1",5,"b");
        System.out.println("获取有序集合指定范围的元素"+jedis.zrange("set1",0,-1));


    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐