亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)

 更新時(shí)間:2023年03月17日 15:00:47   作者:茂桑  
這篇文章主要介紹了關(guān)于Jedis的用法以及Jedis使用Redis事務(wù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

我們要使用java來操作redis

什么是Jedis?

什么是Jedis 是Redis官方推薦的java連接開發(fā)工具!使用Java操作Redis 中間件!(就是一個(gè)jar包)如果你要使用java操作redis,那么一定要對(duì)Jedis十分的熟悉!

測(cè)試

1、導(dǎo)入對(duì)應(yīng)的依賴

        <!-- 導(dǎo)入jedis的包 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.2.2</version>
        </dependency>
        <!-- fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.50</version>
        </dependency>

2、編碼測(cè)試

  • 連接redis數(shù)據(jù)庫
  • 操作命令
  • 斷開連接!
public class TestPing {
    public static void main(String[] args) {
        //1、new Jedis對(duì)象即可
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //Jedis所有的命令就是我們之前學(xué)習(xí)的指令!
        System.out.println(jedis.ping());;
    }
}

輸出:說明連接成功

PONG

jedis所有方法和redis里的所有命令一模一樣,沒有任何改變,在redis上能操作的,使用jedis同樣可以操作

String

執(zhí)行結(jié)果:

string的其他方法:

list

執(zhí)行結(jié)果:

set

執(zhí)行結(jié)果:

hash

執(zhí)行結(jié)果:

zset

也是一樣,在linux上執(zhí)行的命令就是jedis的方法

所有的api命令,就是我們學(xué)習(xí)的指令,一一對(duì)應(yīng),一個(gè)都沒有變化!

事務(wù)

1、在java中使用redis的事務(wù):

package com.uno;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestTx {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello","world");
        jsonObject.put("name", "UNO");
        String result = jsonObject.toJSONString();
        //1、開啟事務(wù)
        Transaction multi = jedis.multi();
        //jedis.watch(result);  //加樂觀鎖,監(jiān)視
        try {
            //2、命令入隊(duì)
            multi.set("user1", result);
            multi.set("user2",result);
            //3、執(zhí)行,這三個(gè)步驟也都是和linux中操作redis命令一模一樣
            multi.exec();
        } catch (Exception e) {
            //當(dāng)出現(xiàn)錯(cuò)誤,放棄事務(wù)
            multi.discard();
            throw new RuntimeException(e);
        } finally {
            System.out.println(jedis.get("user1"));
            System.out.println(jedis.get("user2"));
            //關(guān)閉連接
            jedis.close();
        }
    }
}

執(zhí)行結(jié)果:成功

{"name":"UNO","hello":"world"}

{"name":"UNO","hello":"world"}

2、如果出現(xiàn)錯(cuò)誤:

package com.uno;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestTx {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.flushDB(); //先清理一下數(shù)據(jù)庫,免得被上面的代碼在redis設(shè)置的值影響
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello","world");
        jsonObject.put("name", "UNO");
        String result = jsonObject.toJSONString();
        //1、開啟事務(wù)
        Transaction multi = jedis.multi();
//        jedis.watch(result);  //加樂觀鎖,監(jiān)視
        try {
            //2、命令入隊(duì)
            multi.set("user1", result);
            multi.set("user2",result);
            int i = 1/0;  //手動(dòng)設(shè)置一個(gè)運(yùn)行時(shí)異常,看是不是會(huì)出現(xiàn)運(yùn)行時(shí)異常,然后被catch捕獲
            //3、執(zhí)行,這三個(gè)步驟也都是和linux中操作redis命令一模一樣
            multi.exec();
        } catch (Exception e) {
            //放棄事務(wù)
            multi.discard();
            throw new RuntimeException(e);
        } finally {
            System.out.println(jedis.get("user1"));
            System.out.println(jedis.get("user2"));
            //關(guān)閉連接
            jedis.close();
        }
    }
}

執(zhí)行結(jié)果:出現(xiàn)運(yùn)行時(shí)異常,被catch捕獲,在catch中放棄事務(wù),就是都不執(zhí)行

null
null
Exception in thread "main" java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
    at com.uno.TestTx.main(TestTx.java:28)
Caused by: java.lang.ArithmeticException: / by zero
    at com.uno.TestTx.main(TestTx.java:22)

注意事項(xiàng):jedis連不上遠(yuǎn)程服務(wù)器

用Jedis連接阿里云等服務(wù)器上的redis

一. 配置redis.conf

1.設(shè)置訪問redis的密碼:requirepass 要設(shè)置密碼

2.注釋bind 127.0.0.1

(重啟redis-server服務(wù),進(jìn)入redis后要先驗(yàn)證密碼,用這個(gè)命令:auth 密碼 ,然后ping一下看有沒有配置成功)

二 . idea訪問時(shí)添加auth密碼

Jedis jedis = new Jedis("服務(wù)器的外網(wǎng)ip",6379);
jedis.auth("redis的密碼");
System.out.println(jedis.ping());
(輸出PONG的話就成功了)

題外話:為什么事務(wù)transaction簡(jiǎn)稱為TX

transaction的讀法是/træn’zæk??n/

x的讀法是/?ks/

所以tx分別代表:t - tran; x-saction

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論