redis数据库四:jedis

redis数据库四:jedis



前言

jedis是redis的java版本的客户端实现。也可以说是redis数据库的工具。


一、jedis的简单使用

第一步:我使用的IDE是idea,所以呢大家先在自己的IDE中创建一个web项目啦,其它的IDE我没有试过,所以呢这里我就记录我自己的操作过程,然后呢需要导入两个jar包,这个大家可以自己去下载,版本没必要跟我的一样,匹配就行。
  1.commons-pool2-2.3.jar
  2.jedis-2.7.0.jar
在这里插入图片描述
添加完jar包之后呢,不要忘了将lib添加到当前模块哦,
鼠标放到lib上右键——Add as Library,注意红色箭头那里的选项哦。
!](https://img-blog.csdnimg.cn/20210602092943247.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1F1aWV0X2hhbg==,size_16,color_FFFFFF,t_70)
第二步:下面就来简单测试一下吧,在src里面创建哦,写一个这样的单元测试:

public class JedisTest {
   @Test
    public void test1(){
       //1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
       Jedis jedis = new Jedis("localhost",6379);
       //操作,这里存储键-值
       jedis.set("username","zhangsan");
       //关闭连接
       jedis.close();
   }

我们在单元测试之前先来在redis客户端里面查看数据库有数据没,结果显示是没有的:
在这里插入图片描述
然后我们运行单元测试的代码,运行完之后,再来查数据,查询到的数据就是上面java通过jedis存储到redis数据库的数据:
在这里插入图片描述
至此,jedis的一个快速入门的使用就演示完毕啦。

二、jedis操作各种redis数据结构

之前呢简单介绍过redis的五种数据类型,那在java中如何通过jedis来操作这5中数据类型呢?下面就简单的逐个演示一下吧!

1. String数据结构操作

我还是在上面的那个java文件中用单元测试的方式写下面的代码,

@Test
   public void test2(){
      //1.获取连接,可以不设置参数,默认就是localhost和6379
      Jedis jedis = new Jedis("localhost",6379); 
      //2.操作,存储数据
      jedis.set("username","zhangsan");
      //获取
      String username = jedis.get("username");
      System.out.println(username); 
      
      /*可以使用setex()方法存储可以指定过期时间的key value
		将hello:world键值对存入redis,并且自动20秒后自动删除它
      */
      jedis.setex("hello",20,"world");
      
      //3.关闭连接
      jedis.close();
   }

运行单元测试,然后查询redis数据库:
在这里插入图片描述

2. hash数据结构操作

@Test
   public void test3(){
      //1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
      Jedis jedis = new Jedis("localhost",6379);

      //2.操作
      //存储hash
      jedis.hset("user","name","lisi");
      jedis.hset("user","age","23");
      jedis.hset("user","gender","male");

      //获取hash
      String name  = jedis.hget("user","name");
      System.out.println(name);

      //获取hash的所有map的数据
      Map<String, String> user = jedis.hgetAll("user");

      //keyset
      Set<String> keyset = user.keySet();
      for (String key:keyset){
         String value = user.get(key);
         System.out.println(key+":"+value);
      }

      //关闭连接
      jedis.close();
   }

同样的在,我们运行单元测试后在数据库中查询一下吧,查询的命令我就不赘述的,前面的博文里有:
在这里插入图片描述

3. list数据结构操作

@Test
   public void test4(){
      //1.获取连接,设置主机ip:localhost或者127.0.0.1,还有端口6379
      Jedis jedis = new Jedis("localhost",6379);

      //2.操作
      //存储list
      jedis.lpush("mylist","a","b","c"); //从左边存
      jedis.rpush("mylist","a","b","c"); //从右边存

      //list范围获取
      List<String> mylist = jedis.lrange("mylist",0,-1);
      System.out.println(mylist);

      //list弹出,从左边弹出第一个元素
      String element1 = jedis.lpop("mylist");
      System.out.println(element1);
	  //从右边弹出第一个元素
      String element2 = jedis.rpop("mylist");
      System.out.println(element2);

      //list范围获取
      List<String> mylist2 = jedis.lrange("mylist",0,-1);
      System.out.println(mylist2);
      //关闭连接
      jedis.close();
   }

这里展示一下控制台的输出,方便理解lpop和rpop:
在这里插入图片描述

4. set 数据结构操作

@Test
   public void test5(){
      //1.获取连接
      Jedis jedis = new Jedis("localhost",6379);

      //2.操作,set存储,myset是key,可以存多个值
      jedis.sadd("myset","java","php","c++");

      //set获取
      Set<String> myset = jedis.smembers("myset");
      System.out.println(myset);

      //关闭连接
      jedis.close();
   }

操作跟上面的一样,废话不多说,直接上截图:
在这里插入图片描述

5. sortedset数据结构的操作

@Test
   public void test6(){
      //1. 获取连接
      Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
      //2. 操作
      // sortedset 存储
      jedis.zadd("mysortedset",3,"亚瑟");
      jedis.zadd("mysortedset",30,"后裔");
      jedis.zadd("mysortedset",55,"孙悟空");

      // sortedset 获取
      Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
      System.out.println(mysortedset);

      //3. 关闭连接
      jedis.close();
   }

客户端查询一下吧,这里呢我顺便记录一下我查询时遇到的小错误以及解决办法:
控制台输出:
在这里插入图片描述
redis客户端输出:出现中文乱码问题:在这里插入图片描述
然后我在上查询了一下,有说改默认字体为Lucida Console的,也有说在命令行使用redis-cli.exe --raw这个命令来启动客户端的,但是我都亲身试了一下,的确是不乱码,但是却又是这样的:
在这里插入图片描述
问题原因:因为字符编码的原因,带大家看一下,在dos窗口边缘处(下图)单击右键——属性——选项
在这里插入图片描述
在这里插入图片描述
好啦,现在开始解决上面的问题:
第一步:在redis安装文件目录下打开dos:
在这里插入图片描述
第二步:输入指令:chcp 65001将GBK编码转到UTF8,当然还要改默认字体为Lucida Console哦(边缘部分右键——默认值——字体——Lucida Console)
在这里插入图片描述
第三步:再来查询一下试试:
在这里插入图片描述
好啦,在java中通过jedis简单的操作redis数据库的五种数据类型就介绍完毕啦,希望能对大家有一些帮助。

三、jedis连接池:jedisPool

这个就简单赋个代码吧,后面还可以用工具类操作的,这里就简单介绍下:

@Test
   public void test7(){
      //0.创建一个配置对象
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxTotal(50);  //设置最大的连接数
      config.setMaxIdle(10);  //最大空闲时间

      //1.创建jedisPool连接池对象
      JedisPool jedisPool = new JedisPool(config,"localhost",6379);
      //2.调用方法getResource获取jedis连接
      Jedis jedis = jedisPool.getResource();
      //3.使用
      jedis.set("hehe","heihei");

      //4.关闭,归还到连接池中
      jedis.close();
   }

来获取一下吧:
在这里插入图片描述

总结

到这里在java中通过jedis简单的操作redis数据库就简单介绍完啦,因为使用的IDE可能各不相同,也会有一些差异,自己也是新手小白,就记录一下自己所学的,希望可以帮助到大家(喜欢可以点个赞,哈哈),如有不足之处欢迎留言指正,虚心求教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值