欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jedis零基礎(chǔ)入門及操作Redis中的數(shù)據(jù)結(jié)構(gòu)詳解

 更新時間:2022年09月13日 09:59:16   作者:流楚丶格念  
Jedis 的 API 方法跟 Redis 的命令基本上完全一致,熟悉 Redis 的操作命令,自然就很容易使用 Jedis,因此官方也推薦 Java 使用 Jedis 來連接和操作 Redis

Jedis簡介及其入門

Jedis簡介

redis是當(dāng)今基本所有互聯(lián)網(wǎng)產(chǎn)品都在使用的一種提供鍵值對形式的內(nèi)存數(shù)據(jù)庫。之所以說是內(nèi)存數(shù)據(jù)庫,是因為redis基于內(nèi)存的讀取和寫入相比傳統(tǒng)的數(shù)據(jù)庫基于磁盤IO快上數(shù)倍。于是乎redis在現(xiàn)在的應(yīng)用中使用的非常廣泛。

redis主要的作用在于:

  • 提供緩存服務(wù),存儲訪問頻率高的熱數(shù)據(jù)防止穿透到數(shù)據(jù)庫
  • 在分布式系統(tǒng)中可以作為實現(xiàn)分布式鎖的一種實現(xiàn)方案

那jedis就是集成了redis的一些命令操作,封裝了redis的java客戶端。提供了連接池管理。一般不直接使用jedis,而是在其上在封裝一層,作為業(yè)務(wù)的使用

總結(jié):Jedis: 一款java操作redis數(shù)據(jù)庫的工具。

Jedis的操作入門

導(dǎo)入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);
        //設(shè)置連接redis的密碼 沒密碼,就不寫
        // jedis.auth("");
        //操作
        jedis.set("username", "zhangsan");
        //關(guān)閉連接
        jedis.close();
    }
}

先啟動redis服務(wù)端,再運行代碼

運行結(jié)束以后,username就存在了redis中

Jedis操作Redis中的數(shù)據(jù)結(jié)構(gòu)

字符串類型 string

代碼如下,set與get默認的就是操作字符串類型

@Test
public void JedisStringTest() {
    // 建立連接,如果無參,默認主機名為localhost,port為6379
    Jedis jedis = new Jedis();
    // 設(shè)置連接redis的密碼
    // jedis.auth("123456");
    // 操作數(shù)據(jù)
    // set存儲數(shù)據(jù)
    jedis.set("username", "yangminghui");
    // get獲取數(shù)據(jù)
    String name = jedis.get("username");
    System.out.println(name);
    //關(guān)閉連接
    jedis.close();
}

運行結(jié)果:

在操作字符串時,也可以指定數(shù)據(jù)的保存時間,超過指定時間之后,數(shù)據(jù)自動刪除,比如發(fā)送驗證碼,該驗證碼在指定的時間內(nèi)有效,可以通過這種方式實現(xiàn)。

使用setex函數(shù)存儲具有時間限制的數(shù)據(jù)

參數(shù)如下:

  • 第一個參數(shù)key,是存儲的鍵
  • 第二個有效期,以秒為單位
  • 第三個參數(shù)value,是要存儲的值

例如:

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

存儲鍵為yang,值為666的數(shù)據(jù),有效期為10s,10s之后自動刪除

代碼如下:

@Test
public void JedisStringSetexTest() throws InterruptedException {
    // 建立連接,如果無參,默認主機名為localhost,port為6379
    Jedis jedis = new Jedis();
    // 設(shè)置連接redis的密碼
    // jedis.auth("123456");
    // 操作數(shù)據(jù)
    // setex存儲具有時間限制的數(shù)據(jù)
    // 第一個參數(shù)key,第二個有效期,以秒為單位,第三個參數(shù)value
    jedis.setex("username", 3,"yangminghui");
    // get獲取數(shù)據(jù)
    String name = jedis.get("username");
    System.out.println(name);
    Thread.sleep(4000);
    String name2 = jedis.get("username");
    System.out.println(name2);
    //關(guān)閉連接
    jedis.close();
}

運行結(jié)果:

哈希類型 map

代碼如下:

@Test
public void JedisHashTest(){
    //建立連接
    Jedis jedis = new Jedis("localhost", 6379);
    // 設(shè)置連接redis的密碼
    // jedis.auth("123456");
    //操作數(shù)據(jù)
    //hset存儲數(shù)據(jù)
    jedis.hset("myhash", "username", "yangminghui");
    jedis.hset("myhash", "password", "666666");
    jedis.hset("myhash", "sex", "male");
    //hget獲取數(shù)據(jù)
    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());
    }
    //關(guān)閉連接
    jedis.close();
}

運行結(jié)果:

列表類型 list

代碼如下:

@Test
public void JedisListTest(){
    //建立連接
    Jedis jedis = new Jedis("localhost",6379);
    //設(shè)置連接redis的密碼
    // jedis.auth("123456");
    //操作數(shù)據(jù)
    //lpush向列表的左邊添加數(shù)據(jù)
    jedis.lpush("mylist", "a","b","c");
    //rpush,向列表的右邊添加數(shù)據(jù)
    jedis.rpush("mylist", "d","e");
    //獲取數(shù)據(jù),第一個參數(shù)為鍵,第二個參數(shù)為起始值,第三個參數(shù)為結(jié)束值,-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);
    //關(guān)閉連接
    jedis.close();
}

運行結(jié)果如下:

集合類型 set

代碼如下:

@Test
public void JedisSetTest(){
    // 建立連接
    Jedis jedis = new Jedis("localhost",6379);
    // 設(shè)置連接redis的密碼
    // jedis.auth("123456");
    //操作數(shù)據(jù)
    //sadd添加數(shù)據(jù)
    jedis.sadd("myset", "b","a","d","a");
    // smembers獲取元素
    Set<String> set = jedis.smembers("myset");
    for (String string : set) {
        System.out.println(string);
    }
    // 關(guān)閉連接
    jedis.close();
}

獲取結(jié)果沒有重復(fù)的值:

有序集合類型 sortedset

代碼如下,使用zadd添加數(shù)據(jù)的時候需要設(shè)置數(shù)據(jù)的排序分數(shù):

@Test
public void JedisSortedSetTest(){
    // 建立連接
    Jedis jedis = new Jedis("localhost",6379);
    // 設(shè)置連接redis的密碼
    // jedis.auth("123456");
    //操作數(shù)據(jù)
    //zadd添加數(shù)據(jù)
    jedis.zadd("mysort", 50, "yang");
    jedis.zadd("mysort", 12, "yu");
    jedis.zadd("mysort", 22 , "wang");
    //zrange獲取元素,第一個參數(shù)鍵,第二個起始位置,第三個參數(shù)結(jié)束位置
    Set<String> set = jedis.zrange("mysort", 0, -1);
    for (String string : set) {
        System.out.println(string);
    }
    System.out.println("-------------");
    //帶分數(shù)獲取
    Set<Tuple> set2 = jedis.zrangeWithScores("mysort", 0, -1);
    for (Tuple tuple : set2) {
        System.out.println(tuple.getElement()+":"+tuple.getScore());
    }
    //關(guān)閉連接
    jedis.close();
}

運行結(jié)果如下:

到此這篇關(guān)于Jedis零基礎(chǔ)入門及操作Redis中的數(shù)據(jù)結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)Jedis操作Redis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 反射機制

    java 反射機制

    本文主要介紹了java反射機制的相關(guān)知識,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • Java填充替換數(shù)組元素實例詳解

    Java填充替換數(shù)組元素實例詳解

    這篇文章主要通過兩個實例說明Java填充和替換數(shù)組中元素的方法,需要的朋友可以參考下。
    2017-08-08
  • Spring Cloud Admin健康檢查 郵件、釘釘群通知的實現(xiàn)

    Spring Cloud Admin健康檢查 郵件、釘釘群通知的實現(xiàn)

    這篇文章主要介紹了Spring Cloud Admin健康檢查 郵件、釘釘群通知的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java 獲取對象中為null的字段實例代碼

    java 獲取對象中為null的字段實例代碼

    這篇文章主要介紹了java 獲取對象中為null的字段實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • SpringBoot默認包掃描機制與默認配置文件詳解

    SpringBoot默認包掃描機制與默認配置文件詳解

    這篇文章主要給大家詳細介紹了SpringBoot默認包掃描機制的原理和示例,以及SpringBoot默認配置文件介紹,文章通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Java中的魔法值解決

    Java中的魔法值解決

    這篇文章主要介紹了Java中的魔法值解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解Java正則表達式語法

    詳解Java正則表達式語法

    這篇文章主要介紹了Java正則表達式語法,包括常用正則表達式、匹配驗證-驗證Email是否正確以及字符串中查詢字符或者字符串,感興趣的小伙伴們可以參考一下
    2015-12-12
  • java過濾html標簽獲取純文本信息的實例

    java過濾html標簽獲取純文本信息的實例

    今天小編就為大家分享一篇java過濾html標簽獲取純文本信息的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Java SimpleDateFormat線程安全問題原理詳解

    Java SimpleDateFormat線程安全問題原理詳解

    這篇文章主要介紹了Java SimpleDateFormat線程安全問題原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • java Split 實現(xiàn)去除一個空格和多個空格

    java Split 實現(xiàn)去除一個空格和多個空格

    這篇文章主要介紹了java Split 實現(xiàn)去除一個空格和多個空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論