学习Redis,day12 Redis在Java中Jedis的操作(Key/String操作)~

140 阅读2分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

Redis在Java中Jedis的操作(Key/String操作)

什么是jedis是Redis官方推荐的java连接开发工具!使用java操作Redis 中间件!如果你要使用java操作redis,那么一定要对Jedis十分的熟悉!

1、导入对应的依赖

 <dependencies>
         <!-- 导入jedis包 -->
         <dependency>
             <groupId>redis.clients</groupId>
             <artifactId>jedis</artifactId>
             <version>3.2.0</version>
         </dependency>
         <!-- fastjson -->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.28</version>
         </dependency>
 </dependencies>

2、编码测试:

  • 连接数据库
  • 操作命令
  • 断开连接
 package com.zxy;
 import redis.clients.jedis.Jedis;

 public class TestPing {
     public static void main(String[] args) {
         //1、new Jedis 对象即可
         /*
         new Jedis("127.0.0.1",6379);
         // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要 
         // jedis.auth("******");
         第一个参数:访问地址
         第二个参数:端口号
          */
         Jedis jedis = new Jedis("127.0.0.1",6379);
         System.out.println(jedis.ping());
     }
 }

输出:

image.png

对key操作的命令

  • 清空所处数据库数据:jedis.flushDB

  • 判断键值对是否存在:jedis.exists

  • 设置键值对:jedis.set

  • 获取所处数据库中所有键:jedis.keys

  • 删除指定键值对数据:jedis.del

  • 判断指定键值对类型:jedis.type

  • 获取指定键值对的值:jedis.get

  • 按索引查询:jedis.select

  • 查询数据库中key的数目:jedis.dbSize

  • 清空所有数据库数据:jedis.flushAll

  • 随机一个key:jedis.randomKey

  • 重命名key:jedis.rename

 public static void main(String[] args) {
     //1、new Jedis 对象即可
     /*
     new Jedis("127.0.0.1",6379);
     第一个参数:访问地址
     第二个参数:端口号
      */
     Jedis jedis = new Jedis("127.0.0.1",6379);
     System.out.println(jedis.ping());

     System.out.println("清空数据:"+jedis.flushDB());
     System.out.println("判断某个键是否存在:"+jedis.exists( "username"));
     System.out.println("新增< 'username' , 'kuangshen'>的键值对:"+jedis.set( "username","xuyang"));
     System.out.println("新增< 'password' , ' password'>的键值对:"+jedis.set( "password" , "password"));
     System.out.print("系统中所有的键如下: ");
     Set<String> keys = jedis.keys( "*");
     System.out.println(keys) ;
     System.out.println("删除键password: "+jedis.del("password" )) ;
     System.out.println("判断键password是否存在: "+jedis.exists("password"));
     System.out.println("查看键username所存储的值的类型: "+jedis.type("username"));
     System.out.println("随机返回key空间的一个: "+jedis.randomKey());
     System.out.println("重命名key: "+jedis.rename( "username" ,"name" ));
     System.out.println("取出改后的name: "+jedis.get( "name" ) ) ;
     System.out.println("按索引查询:"+jedis.select( 0));
     System.out.println("删除当前选择数据库中的所有key: "+jedis.flushDB());
     System.out.println("返回当前数据库中key的数目:"+jedis.dbSize());
     System.out.println("删除所有数据库中的所有key: "+jedis.flushAll());
 }

对String操作的命令

  • 未指定键的字符串后追加字符:jedis.append

  • 批量设置键值对:jedis.mset

  • 批量获取键值对:jedis.mget

  • 批量设置键值对:jedis.setnx;不存在成功,否则报错

  • 截取指定范围字符串值:jedis.getrange

 public static void main(String[] args) {

         Jedis jedis = new Jedis("127.0.0.1",6379);
         
         System.out.println("======================增加数据=======================");
         System.out.println(jedis.set( "key1" , "value1"));
         System.out.println(jedis.set( "key2" , "value2"));
         System.out.println(jedis.set( "key3", "value3") );
         System.out.println("删除键key2 : "+jedis.del("key2"));
         System.out.println("获取键key2 : "+jedis.get( "key2" ));
         System.out.println("修改key1 : "+jedis.set( "key1","value1Changed"));
         System.out.println("获取key1的值: "+jedis.get("key1" )) ;
         System.out.println("在key3后面加入值: "+jedis.append("key3" ,"End"));
         System.out.println( "key3的值:"+jedis.get( "key3")) ;
         System.out.println("增加多个键值对:"+jedis.mset("key01" , "value1" , "key02" ,"value02","key03","value03"));
         System.out.println("获取多个键值对:"+jedis.mget("key01" , "key02" , "key03"));
         System.out.println("获取多个键值对:"+jedis.mget("key01 " , "key02" , "key03" , "key04"));
         System.out.println("删除多个键值对:"+jedis.del("key01" , "key02"));
         System.out.println("获取多个键值对:"+jedis.mget("key01" , "key02" , "key03"));
         
         jedis.flushDB();
         System.out.println("==========新增键值对防止覆盖原先值=========");
         System.out.println(jedis.setnx( "key1", "value1"));
         System.out.println(jedis.setnx( "key2", "value2" ));
         System.out.println(jedis.setnx( "key2", "value2-new"));
         System.out.println(jedis.get( "key1" ));
         System.out.println(jedis.get ( "key2" ));

         System.out.println("==========新增键值对并设置有效时间============");
         System.out.println(jedis.setex("key3", 2,"value3"));
         System.out.println(jedis.get( "key3" ));
         try{
             TimeUnit.SECONDS.sleep(3 );
         }catch (InterruptedException e) {
             e.printStackTrace();
         }
         System.out.println(jedis.get ( "key3" ) ) ;
         System.out.println("==========获取原值,更新为新值========");
         System.out.println(jedis.getSet( "key2", "key2GetSet"));
         System.out.println(jedis.get ( "key2" ));
         System.out.println("获得key2的值的字串:"+jedis.getrange("key2",2,4));
     }

明天继续加油!