【Redis】 Java操作Redis客户端命令——基础操作与字符串操作

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis】 Java操作Redis客户端命令——基础操作与字符串操作

🍃前言

本篇文章重点是,介绍一些Java 操作 Redis 的常见命令的使用。

总体分为以下6个部分进行介绍:

  1. 基础操作
  2. 字符串操作
  3. 列表操作
  4. 哈希表操作
  5. 集合操作
  6. 有序集合操作

本篇演示以下两种用法:

  1. 基础操作
  2. 字符串操作

🎍基础操作

准备工作代码如下:

public class EssentialDemo {
    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
        try (Jedis jedis = jedisPool.getResource()){
            jedis.flushAll();
            // 在此处调用测试代码
            //testGetAndSet(jedis);
            //testExistsAndDel(jedis);
            //testKeys(jedis);
            //testExpireAndTtl(jedis);
            //testType(jedis);
        }
    }
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写的【Redis】 常见的基本全局命令

🚩get 和 set

  • get:获取 key 所对应的 value,若当前key 不存在,则获取为null
  • set:设置当前 key 与 value

这两个命令本应该属于字符串操作,但是由于后面基本操作都离不开这两个操作,所以这里先行进行介绍一下。

public static void testGetAndSet(Jedis jedis) {
    System.out.println("测试 get 和 set");
    jedis.set("k1","111");
    jedis.set("k2","222");
    String result = jedis.get("k1");
    System.out.println("k1:" + result);
    result = jedis.get("k2");
    System.out.println("k2:" + result);
    result = jedis.get("k3");
    System.out.println("k3:" + result);
}

执行结果如下:

🚩exists 和 del

  • exists: 判断当前 key 是否存在
  • del: 删除当前key(可以为多个)可以,返回删除 key 的个数

代码示例如下:

public static void testExistsAndDel(Jedis jedis) {
    System.out.println("测试 exists 和 del");
    jedis.set("k1","111");
    jedis.set("k2","222");
    jedis.set("k3","333");
    boolean ret = jedis.exists("k1");
    System.out.println("k1 : " + ret);
    long n = jedis.del("k1");
    ret = jedis.exists("k1");
    System.out.println("n : " + n);
    System.out.println("k1 : " + ret);
    n = jedis.del("k2","k3");
    System.out.println("n : " + n);
    ret = jedis.exists("k2");
    System.out.println("k2 : " + ret);
    ret = jedis.exists("k3");
    System.out.println("k3 : " + ret);
}

执行情况如下:

🚩keys

  • keys:获取相应的key,可以使用通配符,返回一个集合

代码示例如下:

public static void testKeys(Jedis jedis) {
    System.out.println("测试 keys");
    jedis.set("k1","11");
    jedis.set("k2","22");
    jedis.set("k3","33");
    Set<String> arrayList = jedis.keys("*");
    System.out.println("* : " + arrayList);
}

执行结果如下:

🚩expire 和 ttl

  • expire:设置过期时间,使⽤ setex 直接设置 key 的同时指定过期时间. 单位为秒
  • ttl:显示剩余时间

代码示例如下:

public static void testExpireAndTtl(Jedis jedis)  {
    System.out.println("测试 expire 和 ttl");
    jedis.setex("key",2,"value");
    long ttl = 1;
    while (ttl > 0) {
        try {
            Thread.sleep(100);
            ttl = jedis.ttl("key");
            System.out.println("剩余:" + ttl);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

执行结果如下:

🚩type

  • type:显示当前key所对应value的类型

代码示例如下:

public static void testType(Jedis jedis) {
    jedis.set("key1", "value");
    System.out.println(jedis.type("key1"));
    jedis.lpush("key2", "a", "b", "c");
    System.out.println(jedis.type("key2"));
    jedis.hset("key3", "name", "zhangsan");
    System.out.println(jedis.type("key3"));
    jedis.sadd("key4", "111", "222", "333");
    System.out.println(jedis.type("key4"));
    jedis.zadd("key5", 1, "aaa");
    System.out.println(jedis.type("key5"));
}

执行结果如下:

🍀字符串操作

除去上面所介绍的 get 与 set ,还有以下操作。

首先准备工作代码如下:

public class StringDemo {
    public static void main(String[] args) {
        JedisPool jedisPool = new JedisPool("tcp://127.0.0.1:8888");
            try (Jedis jedis = jedisPool.getResource()){
              jedis.flushAll();
              //在此处调用测试代码
              //testMsetAndMget(jedis);
              //testAppend(jedis);
              //testSetrangeAndGetrange(jedis);
              //testSetnx(jedis);
              //testIncrDecr(jedis);
              //testIncrbyDecrby(jedis);
        }
    }
}

这里博主只展示如何使用 Java 操作完成这些命令操作,如果有小伙伴对这部分命令作用不了解,可以参考博主写【Redis】 String 字符串类型常见命令

🚩mset 和 mget

  • mset:设置多个key与value
  • mset:获取多个key的value,返回一个列表

代码示例如下:

public static void testMsetAndMget(Jedis jedis) {
    jedis.mset("k1","11","k2","22","k3","33");
    List<String> list = jedis.mget("k1","k2","k3","k4");
    System.out.println("list : " + list);
}

执行结果如下:

🚩append

  • append:对原字符串进行拼接

代码示例如下:

public static void  testAppend(Jedis jedis) {
    System.out.println("测试 append ");
    jedis.set("k1","abc");
    String result = jedis.get("k1");
    System.out.println("result : " + result);
    jedis.append("k1","def");
    result = jedis.get("k1");
    System.out.println("result : " + result);
}

执行结果如下:

🚩getrange 和 setrange

  • setrange:覆盖字符串的⼀部分,从指定的偏移开始。
  • getrange:返回 key 对应的 string 的⼦串(左闭右闭)。

代码示例如下:

public static void testSetrangeAndGetrange(Jedis jedis) {
    System.out.println("测试 setrange 和 getrange");
    jedis.set("key","abcdefg");
    String result = jedis.getrange("key",0,-1);
    System.out.println("result : " + result);
    result = jedis.getrange("key",1,4);
    System.out.println("result : " + result);
    jedis.setrange("key",0,"123");
    result = jedis.getrange("key",0,-1);
    System.out.println("result : " + result);
}

执行结果如下:

🚩setnx

  • setnx:设置 key-value 但只允许在 key 之前不存在的情况下。

代码示例如下:

public static void testSetnx(Jedis jedis) {
    System.out.println("测试 setnx");
    jedis.set("k1","11");
    long n = jedis.setnx("k1","11");
    System.out.println(n);
    n = jedis.setnx("k2","22");
    System.out.println(n);
    String result = jedis.get("k2");
    System.out.println(result);
}

代码执行结如下

🚩incr 和 decr

  • incr:将 key 对应的 string 表⽰的数字加⼀
  • decr:将 key 对应的 string 表⽰的数字减⼀

代码示例如下:

public static void testIncrDecr(Jedis jedis) {
    System.out.println("测试 incr 和 decr");
    jedis.set("k1","5");
    String result = jedis.get("k1");
    System.out.println("此时result : " + result);
    jedis.decr("k1");
    result = jedis.get("k1");
    System.out.println("result - 1 : " + result);
    System.out.println("此时result : " + result);
    jedis.incr("k1");
    result = jedis.get("k1");
    System.out.println("result + 1 : " + result);
}

执行结果如下:

🚩incrby 和 decrby

  • incrby:将 key 对应的 string 表⽰的数字加上对应的值。
  • decrby:将 key 对应的 string 表⽰的数字减去对应的值。

代码示例如下:

public static void testIncrbyDecrby(Jedis jedis) {
    System.out.println("测试 incr 和 decr");
    jedis.set("k1","5");
    String result = jedis.get("k1");
    System.out.println("此时result : " + result);
    jedis.decrBy("k1",5);
    result = jedis.get("k1");
    System.out.println("result - 5 : " + result);
    System.out.println("此时result : " + result);
    jedis.incrBy("k1",5);
    result = jedis.get("k1");
    System.out.println("result + 5 : " + result);
}

执行结果如下:

⭕总结

关于《【Redis】 Java操作Redis客户端命令——基础操作与字符串操作》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

相关实践学习
基于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
相关文章
|
11天前
|
缓存 NoSQL Java
Java高并发实战:利用线程池和Redis实现高效数据入库
Java高并发实战:利用线程池和Redis实现高效数据入库
32 0
|
17小时前
|
Java Linux
Java执行Linux命令
Java执行Linux命令
7 2
|
5天前
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
9 2
|
4天前
|
存储 NoSQL 算法
Redis(四):del/unlink 命令源码解析
Redis(四):del/unlink 命令源码解析
|
11天前
|
NoSQL 测试技术 Scala
java.lang.RuntimeException: Can‘t start redis server. Check logs for details.
java.lang.RuntimeException: Can‘t start redis server. Check logs for details.
13 1
|
12天前
|
IDE Java 编译器
Java基础20-从IDE的实现原理聊起,谈谈那些年我们用过的Java命令(二)
Java基础20-从IDE的实现原理聊起,谈谈那些年我们用过的Java命令(二)
22 2
|
12天前
|
XML IDE Java
Java基础20-从IDE的实现原理聊起,谈谈那些年我们用过的Java命令(一)
Java基础20-从IDE的实现原理聊起,谈谈那些年我们用过的Java命令(一)
17 2
|
14天前
|
NoSQL 数据管理 关系型数据库
数据管理DMS操作报错合集之控制台查看Redis时出现乱码是什么导致的
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
22小时前
|
存储 NoSQL Redis
Python—操作redis的一些心得
Python—操作redis的一些心得
|
3天前
|
存储 NoSQL Redis
Redis系列-存储hash主要操作命令
Redis系列-存储hash主要操作命令