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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
相关文章
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
115 38
|
19天前
|
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
61 6
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
2634 31
MCP客户端调用看这一篇就够了(Java版)
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
115 32
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
172 25
|
3月前
|
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
226 94
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
尼恩提供了一系列文章,旨在帮助开发者轻松搭建一键开发环境,涵盖Java分布式、高并发场景下的多种技术组件安装与配置。内容包括但不限于Windows和CentOS虚拟机的安装与排坑指南、MySQL、Kafka、Redis、Zookeeper等关键组件在Linux环境下的部署教程,并附带详细的视频指导。此外,还特别介绍了Vagrant这一虚拟环境部署工具,
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
java连接redis和基础操作命令
通过以上内容,您可以掌握在Java中连接Redis以及进行基础操作的基本方法,进而在实际项目中灵活应用。
239 30
|
6月前
|
Java Redis多限流
通过本文的介绍,我们详细讲解了如何在Java中使用Redis实现三种不同的限流策略:固定窗口限流、滑动窗口限流和令牌桶算法。每种限流策略都有其适用的场景和特点,根据具体需求选择合适的限流策略可以有效保护系统资源和提高服务的稳定性。
124 18
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
421 26
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等