Jedis简介及其入门

Jedis简介

redis是当今基本所有互联网产品都在使用的一种提供键值对形式的内存数据库。之所以说是内存数据库,是因为redis基于内存的读取和写入相比传统的数据库基于磁盘IO快上数倍。于是乎redis在现在的应用中使用的非常广泛。

redis主要的作用在于:

  • 提供缓存服务,存储访问频率高的热数据防止穿透到数据库
  • 在分布式系统中可以作为实现分布式锁的一种实现方案

那jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用

总结:Jedis: 一款java操作redis数据库的工具。

Jedis的操作入门

导入Jedis的依赖

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

建立测试类进行使用

package com.yyl.firstdemo;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
    @Test
    public void ConnectionTest(){
        //建立连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置连接redis的密码 没密码,就不写
        // jedis.auth("");
        //操作
        jedis.set("username", "zhangsan");
        //关闭连接
        jedis.close();
    }
}

先启动redis服务端,再运行代码

运行结束以后,username就存在了redis中

Jedis操作Redis中的数据结构

字符串类型 string

代码如下,set与get默认的就是操作字符串类型

@Test
public void JedisStringTest() {
    // 建立连接,如果无参,默认主机名为localhost,port为6379
    Jedis jedis = new Jedis();
    // 设置连接redis的密码
    // jedis.auth("123456");
    // 操作数据
    // set存储数据
    jedis.set("username", "yangminghui");
    // get获取数据
    String name = jedis.get("username");
    System.out.println(name);
    //关闭连接
    jedis.close();
}

运行结果:

在操作字符串时,也可以指定数据的保存时间,超过指定时间之后,数据自动删除,比如发送验证码,该验证码在指定的时间内有效,可以通过这种方式实现。

使用setex函数存储具有时间限制的数据

参数如下:

  • 第一个参数key,是存储的键
  • 第二个有效期,以秒为单位
  • 第三个参数value,是要存储的值

例如:

jedis.setex("yang", 10, "666");

存储键为yang,值为666的数据,有效期为10s,10s之后自动删除

代码如下:

@Test
public void JedisStringSetexTest() throws InterruptedException {
    // 建立连接,如果无参,默认主机名为localhost,port为6379
    Jedis jedis = new Jedis();
    // 设置连接redis的密码
    // jedis.auth("123456");
    // 操作数据
    // setex存储具有时间限制的数据
    // 第一个参数key,第二个有效期,以秒为单位,第三个参数value
    jedis.setex("username", 3,"yangminghui");
    // get获取数据
    String name = jedis.get("username");
    System.out.println(name);
    Thread.sleep(4000);
    String name2 = jedis.get("username");
    System.out.println(name2);
    //关闭连接
    jedis.close();
}

运行结果:

哈希类型 map

代码如下:

@Test
public void JedisHashTest(){
    //建立连接
    Jedis jedis = new Jedis("localhost", 6379);
    // 设置连接redis的密码
    // jedis.auth("123456");
    //操作数据
    //hset存储数据
    jedis.hset("myhash", "username", "yangminghui");
    jedis.hset("myhash", "password", "666666");
    jedis.hset("myhash", "sex", "male");
    //hget获取数据
    String password = jedis.hget("myhash", "password");
    System.out.println("password" password);
    System.out.println("---------------------------------");
    //hgetall获取所有,得到map集合
    Map<String, String> map = jedis.hgetAll("myhash");
    //遍历map集合
    Set<Map.Entry<String, String>> entrySet = map.entrySet();
    for (Map.Entry<String, String> entry : entrySet) {
        System.out.println(entry.getKey() ":" entry.getValue());
    }
    //关闭连接
    jedis.close();
}

运行结果:

列表类型 list

代码如下:

@Test
public void JedisListTest(){
    //建立连接
    Jedis jedis = new Jedis("localhost",6379);
    //设置连接redis的密码
    // jedis.auth("123456");
    //操作数据
    //lpush向列表的左边添加数据
    jedis.lpush("mylist", "a","b","c");
    //rpush,向列表的右边添加数据
    jedis.rpush("mylist", "d","e");
    //获取数据,第一个参数为键,第二个参数为起始值,第三个参数为结束值,-1表示到最后一个
    List<String> list = jedis.lrange("mylist", 0, -1);
    for (String string : list) {
        System.out.println(string);
    }
    System.out.println("--------------");
    //删除并且返回最左边的元素
    String value1 = jedis.lpop("mylist");
    System.out.println(value1);
    System.out.println("--------------");
    //删除并且返回最右边的元素
    String value2 = jedis.rpop("mylist");
    System.out.println(value2);
    System.out.println("--------------");
    //再次获取
    List<String> list2 = jedis.lrange("mylist", 0, -1);
    System.out.println(list2);
    //关闭连接
    jedis.close();
}

运行结果如下:

集合类型 set

代码如下:

@Test
public void JedisSetTest(){
    // 建立连接
    Jedis jedis = new Jedis("localhost",6379);
    // 设置连接redis的密码
    // jedis.auth("123456");
    //操作数据
    //sadd添加数据
    jedis.sadd("myset", "b","a","d","a");
    // smembers获取元素
    Set<String> set = jedis.smembers("myset");
    for (String string : set) {
        System.out.println(string);
    }
    // 关闭连接
    jedis.close();
}

获取结果没有重复的值:

有序集合类型 sortedset

代码如下,使用zadd添加数据的时候需要设置数据的排序分数:

@Test
public void JedisSortedSetTest(){
    // 建立连接
    Jedis jedis = new Jedis("localhost",6379);
    // 设置连接redis的密码
    // jedis.auth("123456");
    //操作数据
    //zadd添加数据
    jedis.zadd("mysort", 50, "yang");
    jedis.zadd("mysort", 12, "yu");
    jedis.zadd("mysort", 22 , "wang");
    //zrange获取元素,第一个参数键,第二个起始位置,第三个参数结束位置
    Set<String> set = jedis.zrange("mysort", 0, -1);
    for (String string : set) {
        System.out.println(string);
    }
    System.out.println("-------------");
    //带分数获取
    Set<Tuple> set2 = jedis.zrangeWithScores("mysort", 0, -1);
    for (Tuple tuple : set2) {
        System.out.println(tuple.getElement() ":" tuple.getScore());
    }
    //关闭连接
    jedis.close();
}

运行结果如下:

到此这篇关于Jedis零基础入门及操作Redis中的数据结构详解的文章就介绍到这了,更多相关Jedis操作Redis内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Jedis零基础入门及操作Redis中的数据结构详解的更多相关文章

  1. 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法

    这篇文章主要介绍了布隆过滤器(bloom filter)介绍以及php和redis实现布隆过滤器实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. springboot+redis实现简单的热搜功能

    这篇文章主要介绍了springboot+redis实现一个简单的热搜功能,通过代码介绍了过滤不雅文字的过滤器,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 详解Jquery的事件操作和文档操作

    本篇文章主要对Jquery的事件操作和文档操作进行实例的分享,具有很好的参考价值,需要的朋友一起来看下吧

  4. Java利用redis zset实现延时任务详解

    zset作为redis的有序集合数据结构存在,排序的依据就是score。本文就将利用zset score这个排序的这个特性,来实现延时任务,感兴趣的可以了解一下

  5. SpringBoot+Redis+Lua分布式限流的实现

    本文主要介绍了SpringBoot+Redis+Lua分布式限流的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. Yii2框架redis基本应用示例

    这篇文章主要介绍了Yii2框架redis基本应用,结合实例形式分析了Yii2 redis扩展包的安装、配置及基本数据操作相关技巧,需要的朋友可以参考下

  7. redis+php实现微博(二)发布与关注功能详解

    这篇文章主要介绍了redis+php实现微博发布与关注功能,结合实例形式分析了php结合redis实现微博的发布及关注相关操作技巧,需要的朋友可以参考下

  8. Python中字典常用操作的示例详解

    字典是Python必用且常用的数据结构,本文主要为大家梳理了一下常用的字典操作:初始化、合并字典、字典转Pandas等,需要的可以参考一下

  9. python 实现 redis 数据库的操作

    这篇文章主要介绍了python 包 redis 数据库的操作教程,redis 是一个 Key-Value 数据库,下文基于python的相关资料展开对redis 数据库操作的详细介绍,需要的小伙伴可以参考一下

  10. 全面解析DOM操作和jQuery实现选项移动操作代码分享

    这篇文章主要介绍了DOM操作和jQuery实现选项移动操作代码分享的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部