0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java 使用Redis緩存工具的詳細(xì)解說(shuō)

lhl545545 ? 來(lái)源:電子發(fā)燒友網(wǎng) ? 2018-02-09 14:10 ? 次閱讀

Java 使用Redis緩存工具的詳細(xì)解說(shuō)

開(kāi)始在 Java 中使用 Redis 前, 我們需要確保已經(jīng)安裝了 redis 服務(wù)及 Java redis 驅(qū)動(dòng),且你的機(jī)器上能正常使用 Java。

(1)Java的安裝配置可以參考我們的 Java開(kāi)發(fā)環(huán)境配置

(2)安裝了 redis 服務(wù);

請(qǐng)參考:Windows環(huán)境下使用Redis緩存工具的圖文詳細(xì)方法(http://www.wenjunhu.com/d/633308.html)

或是:

首先你需要下載驅(qū)動(dòng)包,下載 jedis.jar,確保下載最新驅(qū)動(dòng)包。

在你的classpath中包含該驅(qū)動(dòng)包。

一、新建一個(gè)javaweb項(xiàng)目。

1. 新建一個(gè)Jedis的項(xiàng)目。

Java 使用Redis緩存工具的詳細(xì)解說(shuō)
Java 使用Redis緩存工具的詳細(xì)解說(shuō)

效果如下:

Java 使用Redis緩存工具的詳細(xì)解說(shuō)

二、下載redis依賴(lài)包。

http://yunpan.cn/c36syrdrC6MDx 訪(fǎng)問(wèn)密碼 0cd6

三、實(shí)戰(zhàn)案例

1. 連接本地的 Redis 服務(wù)和查看服務(wù)是否運(yùn)行

package com.souvc.redis;

import redis.clients.jedis.Jedis;

/**

* 類(lèi)名: RedisJava

* 包名: com.souvc.redis

* 描述: 連接本地的 Redis 服務(wù)和查看服務(wù)是否運(yùn)行 《/br>

* 開(kāi)發(fā)人員: souvc

* 創(chuàng)建時(shí)間: 2015-12-9

* 發(fā)布版本:V1.0

*/

public class RedisJava {

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

// 查看服務(wù)是否運(yùn)行

System.out.println(“服務(wù) 正在運(yùn)行: ” + jedis.ping());

}

}

效果如下:

Java 使用Redis緩存工具的詳細(xì)解說(shuō)

為什么會(huì)報(bào)錯(cuò),是我們忘了開(kāi)redis服務(wù)了。

Java 使用Redis緩存工具的詳細(xì)解說(shuō)
Java 使用Redis緩存工具的詳細(xì)解說(shuō)

重新運(yùn)行,發(fā)現(xiàn):

連接本地的 Redis 服務(wù)成功!

Server is running: PONG

以后,我們需要用redis,需要開(kāi)啟這個(gè)服務(wù)。

2. Redis Java String(字符串) 實(shí)例

package com.souvc.redis;

import redis.clients.jedis.Jedis;

/**

* 類(lèi)名: RedisJava

* 包名: com.souvc.redis

* 描述: Redis Java String(字符串) 實(shí)例

* 開(kāi)發(fā)人員: souvc

* 創(chuàng)建時(shí)間: 2015-12-9

* 發(fā)布版本:V1.0

*/

public class RedisStringJava {

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

// 設(shè)置 redis 字符串?dāng)?shù)據(jù)

jedis.set(“souvc”, “http://www.cnblogs.com/liuhongfeng/”);

// 獲取存儲(chǔ)的數(shù)據(jù)并輸出

System.out.println(“redis存儲(chǔ)的字符串是: ” + jedis.get(“souvc”));

}

}

效果如下:

連接本地的 Redis 服務(wù)成功!

redis存儲(chǔ)的字符串是: http://www.cnblogs.com/liuhongfeng/

3. Redis Java List(列表) 實(shí)例 (1)

package com.souvc.redis;

import java.util.List;

import redis.clients.jedis.Jedis;

/**

* 類(lèi)名: RedisListJava

* 包名: com.souvc.redis

* 描述: Redis Java List(列表) 實(shí)例

* 開(kāi)發(fā)人員: souvc

* 創(chuàng)建時(shí)間: 2015-12-9

* 發(fā)布版本:V1.0

*/

public class RedisListJava {

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

// 存儲(chǔ)數(shù)據(jù)到列表中

jedis.lpush(“kecheng”, “java”);

jedis.lpush(“kecheng”, “php”);

jedis.lpush(“kecheng”, “Mysql”);

// 獲取存儲(chǔ)的數(shù)據(jù)并輸出

List《String> list = jedis.lrange(“kecheng”, 0, 5);

for (int i = 0; i< list.size(); i++) {

System.out.println(“redis list里面存儲(chǔ)的值是:” + list.get(i));

}

}

}

效果如下:

連接本地的 Redis 服務(wù)成功!

redis list里面存儲(chǔ)的值是:Mysql

redis list里面存儲(chǔ)的值是:php

redis list里面存儲(chǔ)的值是:java

Redis Java List(列表) 實(shí)例 (2)

package com.souvc.redis;

import redis.clients.jedis.Jedis;

public class RedisListJava2 {

/**

* 方法名:main

* 詳述:Redis Java List(列表) 實(shí)例 2

* 開(kāi)發(fā)人員:souvc

* 創(chuàng)建時(shí)間:2015-12-9

* @param args 說(shuō)明返回值含義

* @throws 說(shuō)明發(fā)生此異常的條件

*/

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

//開(kāi)始前,先移除所有的內(nèi)容

jedis.del(“java framework”);

System.out.println(jedis.lrange(“java framework”,0,-1));

//先向key java framework中存放三條數(shù)據(jù)

jedis.lpush(“java framework”,“spring”);

jedis.lpush(“java framework”,“struts”);

jedis.lpush(“java framework”,“hibernate”);

//再取出所有數(shù)據(jù)jedis.lrange是按范圍取出,

// 第一個(gè)是key,第二個(gè)是起始位置,第三個(gè)是結(jié)束位置,jedis.llen獲取長(zhǎng)度 -1表示取得所有

System.out.println(jedis.lrange(“java framework”,0,-1));

jedis.del(“java framework”);

jedis.rpush(“java framework”,“spring”);

jedis.rpush(“java framework”,“struts”);

jedis.rpush(“java framework”,“hibernate”);

System.out.println(jedis.lrange(“java framework”,0,-1));

}

}

效果如下:

連接本地的 Redis 服務(wù)成功!

[]

[hibernate, struts, spring]

[spring, struts, hibernate]

4. Redis Java Map 實(shí)例

package com.souvc.redis;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import redis.clients.jedis.Jedis;

public class RedisMapJava {

/**

* 方法名:main

* 詳述:redis操作Map

* 開(kāi)發(fā)人員:souvc

* 創(chuàng)建時(shí)間:2015-12-10

* @param args 說(shuō)明返回值含義

* @throws 說(shuō)明發(fā)生此異常的條件

*/

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

//-----添加數(shù)據(jù)----------

Map map = new HashMap();

map.put(“name”, “xinxin”);

map.put(“age”, “22”);

map.put(“qq”, “123456”);

jedis.hmset(“user”,map);

//取出user中的name,執(zhí)行結(jié)果:[minxr]-->注意結(jié)果是一個(gè)泛型的List

//第一個(gè)參數(shù)是存入redis中map對(duì)象的key,后面跟的是放入map中的對(duì)象的key,后面的key可以跟多個(gè),是可變參數(shù)

Listrsmap = jedis.hmget(“user”, “name”, “age”, “qq”);

System.out.println(rsmap);

//刪除map中的某個(gè)鍵值

jedis.hdel(“user”,“age”);

System.out.println(jedis.hmget(“user”, “age”)); //因?yàn)閯h除了,所以返回的是null

System.out.println(jedis.hlen(“user”)); //返回key為user的鍵中存放的值的個(gè)數(shù)2

System.out.println(jedis.exists(“user”));//是否存在key為user的記錄 返回true

System.out.println(jedis.hkeys(“user”));//返回map對(duì)象中的所有key

System.out.println(jedis.hvals(“user”));//返回map對(duì)象中的所有value

Iterator《String> iter=jedis.hkeys(“user”).iterator();

while (iter.hasNext()){

String key = iter.next();

System.out.println(key+“:”+jedis.hmget(“user”,key));

}

}

}

效果:

連接本地的 Redis 服務(wù)成功!

[xinxin, 22, 123456]

[null]

2

true

[qq, name]

[123456, xinxin]

qq:[123456]

name:[xinxin]

5. Redis Java Set 實(shí)例

package com.souvc.redis;

import redis.clients.jedis.Jedis;

public class RedisSetJava {

/**

* 方法名:main

* 詳述:Redis Java Set 實(shí)例

* 開(kāi)發(fā)人員:souvc

* 創(chuàng)建時(shí)間:2015-12-10

* @param args 說(shuō)明返回值含義

* @throws 說(shuō)明發(fā)生此異常的條件

*/

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

//刪除map中的某個(gè)鍵值

//jedis.hdel(“user”);

//添加

jedis.sadd(“user”,“l(fā)iuling”);

jedis.sadd(“user”,“xinxin”);

jedis.sadd(“user”,“l(fā)ing”);

jedis.sadd(“user”,“zhangxinxin”);

jedis.sadd(“user”,“who”);

//移除noname

jedis.srem(“user”,“who”);

System.out.println(jedis.smembers(“user”));//獲取所有加入的value

System.out.println(jedis.sismember(“user”, “who”));//判斷 who 是否是user集合的元素

System.out.println(jedis.srandmember(“user”));

System.out.println(jedis.scard(“user”));//返回集合的元素個(gè)數(shù)

}

}

效果如下:

連接本地的 Redis 服務(wù)成功!

[xinxin, liuling, ling, zhangxinxin]

false

ling

4

5. Redis Java Sort實(shí)例

package com.souvc.redis;

import redis.clients.jedis.Jedis;

public class RedisSortJava {

/**

* 方法名:main

* 詳述:jedis 排序

* 開(kāi)發(fā)人員:souvc

* 創(chuàng)建時(shí)間:2015-12-10

* @param args 說(shuō)明返回值含義

* @throws 說(shuō)明發(fā)生此異常的條件

*/

public static void main(String[] args) {

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

//jedis 排序

//注意,此處的rpush和lpush是List的操作。是一個(gè)雙向鏈表(但從表現(xiàn)來(lái)看的)

jedis.del(“a”);//先清除數(shù)據(jù),再加入數(shù)據(jù)進(jìn)行測(cè)試

jedis.rpush(“a”, “1”);

jedis.lpush(“a”,“6”);

jedis.lpush(“a”,“3”);

jedis.lpush(“a”,“9”);

System.out.println(jedis.lrange(“a”,0,-1));// [9, 3, 6, 1]

System.out.println(jedis.sort(“a”)); //[1, 3, 6, 9] //輸入排序后結(jié)果

System.out.println(jedis.lrange(“a”,0,-1));

}

}

效果:

連接本地的 Redis 服務(wù)成功!

[9, 3, 6, 1]

[1, 3, 6, 9]

[9, 3, 6, 1]

注意:如果是出現(xiàn)這個(gè)錯(cuò)誤,那么是因?yàn)樵O(shè)置了密碼。

Java 使用Redis緩存工具的詳細(xì)解說(shuō)

我們需要加上一個(gè)auth方法進(jìn)行校驗(yàn)。

// 連接本地的 Redis 服務(wù)

Jedis jedis = new Jedis(“l(fā)ocalhost”);

//jedis.auth(“souvc”);

System.out.println(“連接本地的 Redis 服務(wù)成功!”);

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2983

    瀏覽量

    106611
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    382

    瀏覽量

    11265
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Java開(kāi)發(fā)者必備的效率工具——Perforce JRebel是什么?為什么很多Java開(kāi)發(fā)者在用?

    Perforce JRebel是一款Java開(kāi)發(fā)效率工具,旨在幫助java開(kāi)發(fā)人員更快地編寫(xiě)更好的應(yīng)用程序。JRebel可即時(shí)重新加載對(duì)代碼的修改,無(wú)需重啟或重新部署應(yīng)用程序,就能讓開(kāi)發(fā)者即時(shí)看到代碼更改的效果,從而縮短開(kāi)發(fā)、調(diào)
    的頭像 發(fā)表于 04-27 13:44 ?84次閱讀
    <b class='flag-5'>Java</b>開(kāi)發(fā)者必備的效率<b class='flag-5'>工具</b>——Perforce JRebel是什么?為什么很多<b class='flag-5'>Java</b>開(kāi)發(fā)者在用?

    Redis實(shí)戰(zhàn)筆記

    在目前的技術(shù)選型中,Redis 儼然已經(jīng)成為了系統(tǒng)高性能緩存方案的事實(shí)標(biāo)準(zhǔn),因此現(xiàn)在?Redis 也成為了后端開(kāi)發(fā)的基本技能樹(shù)之一。 ? 基于上述情況,今天給大家分享一份?杰哥?親筆撰寫(xiě)的內(nèi)部
    的頭像 發(fā)表于 02-09 09:12 ?271次閱讀
    <b class='flag-5'>Redis</b>實(shí)戰(zhàn)筆記

    華為云 Flexus X 加速 Redis 案例實(shí)踐與詳解

    Redis 加速鏡像,更是為開(kāi)發(fā)者提供了極大的便利。本文將詳細(xì)介紹如何利用華為云 Flexus X 實(shí)例自帶的 Redis 鏡像,快速部署并配置 Redis,以及通過(guò)實(shí)際案例展示其
    的頭像 發(fā)表于 01-23 17:52 ?237次閱讀
    華為云 Flexus X 加速 <b class='flag-5'>Redis</b> 案例實(shí)踐與詳解

    Redis Cluster之故障轉(zhuǎn)移

    1. Redis Cluster 簡(jiǎn)介 Redis Cluster 是 Redis 官方提供的 Redis 集群功能。 為什么要實(shí)現(xiàn) Redis
    的頭像 發(fā)表于 01-20 09:21 ?685次閱讀
    <b class='flag-5'>Redis</b> Cluster之故障轉(zhuǎn)移

    基于javaPoet的緩存key優(yōu)化實(shí)踐

    數(shù)據(jù)庫(kù)中的熱數(shù)據(jù)緩存redis/本地緩存中,代碼如下: ? @Cacheable(value = { "per" }, key="#person.getId
    的頭像 發(fā)表于 01-14 15:18 ?712次閱讀
    基于javaPoet的<b class='flag-5'>緩存</b>key優(yōu)化實(shí)踐

    HTTP緩存頭的使用 本地緩存與遠(yuǎn)程緩存的區(qū)別

    HTTP緩存頭是一組HTTP響應(yīng)頭,它們控制瀏覽器和中間代理服務(wù)器如何緩存網(wǎng)頁(yè)內(nèi)容。合理使用HTTP緩存頭可以顯著提高網(wǎng)站的加載速度和性能,減少服務(wù)器的負(fù)載。 1. HTTP緩存頭概述
    的頭像 發(fā)表于 12-18 09:41 ?347次閱讀

    Redis緩存與Memcached的比較

    Redis和Memcached都是廣泛使用的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),它們主要用于提高應(yīng)用程序的性能,通過(guò)減少對(duì)數(shù)據(jù)庫(kù)的直接訪(fǎng)問(wèn)來(lái)加速數(shù)據(jù)檢索。以下是對(duì)Redis和Memcached的比較,涵蓋了它們的一些
    的頭像 發(fā)表于 12-18 09:33 ?454次閱讀

    解說(shuō)篇:模組雖小,SIM卡電路設(shè)計(jì)不能少!

    本文解說(shuō)的是關(guān)于SIM卡接口功能及其電路設(shè)計(jì)相關(guān)注意事項(xiàng),我將詳細(xì)信息整理如下分享給大家。
    的頭像 發(fā)表于 12-04 21:03 ?610次閱讀
    <b class='flag-5'>解說(shuō)</b>篇:模組雖小,SIM卡電路設(shè)計(jì)不能少!

    緩存之美——如何選擇合適的本地緩存

    Guava cache是Google開(kāi)發(fā)的Guava工具包中一套完善的JVM本地緩存框架,底層實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)類(lèi)似于ConcurrentHashMap,但是進(jìn)行了更多的能力拓展,包括緩存過(guò)期時(shí)間設(shè)置、
    的頭像 發(fā)表于 11-17 14:24 ?689次閱讀
    <b class='flag-5'>緩存</b>之美——如何選擇合適的本地<b class='flag-5'>緩存</b>?

    基于Java工具Power Stage Designer

    電子發(fā)燒友網(wǎng)站提供《基于Java工具Power Stage Designer.pdf》資料免費(fèi)下載
    發(fā)表于 11-14 16:01 ?6次下載
    基于<b class='flag-5'>Java</b>的<b class='flag-5'>工具</b>Power Stage Designer

    使用Arthas火焰圖工具Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

    分享作者在使用Arthas火焰圖工具進(jìn)行Java應(yīng)用性能分析和優(yōu)化的經(jīng)驗(yàn)。
    的頭像 發(fā)表于 10-28 09:27 ?942次閱讀
    使用Arthas火焰圖<b class='flag-5'>工具</b>的<b class='flag-5'>Java</b>應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

    聊聊緩存擊穿的解決方法

    緩存擊穿,Redis中的某個(gè)熱點(diǎn)key不存在或者過(guò)期,但是此時(shí)有大量的用戶(hù)訪(fǎng)問(wèn)該key。比如xxx直播間優(yōu)惠券搶購(gòu)、xxx商品活動(dòng),這時(shí)候大量用戶(hù)會(huì)在某個(gè)時(shí)間點(diǎn)一同訪(fǎng)問(wèn)該熱點(diǎn)事件。但是可能
    的頭像 發(fā)表于 10-23 13:54 ?413次閱讀

    什么是CPU緩存?它有哪些作用?

    CPU緩存(Cache Memory)是計(jì)算機(jī)系統(tǒng)中一個(gè)至關(guān)重要的組成部分,它位于CPU與內(nèi)存之間,作為兩者之間的臨時(shí)存儲(chǔ)器。CPU緩存的主要作用是減少CPU訪(fǎng)問(wèn)內(nèi)存所需的時(shí)間,從而提高系統(tǒng)的整體性能。以下將詳細(xì)闡述CPU
    的頭像 發(fā)表于 08-22 14:54 ?5346次閱讀

    華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

    Java Web和Java是兩個(gè)不同的概念,它們?cè)诠δ?、用途和?shí)現(xiàn)方式上存在一些區(qū)別,下面將詳細(xì)介紹它們之間的區(qū)別。 1. 功能和用途: – Java是一種編程語(yǔ)言,它提供了一種用于開(kāi)
    的頭像 發(fā)表于 07-16 13:35 ?1285次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區(qū)別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區(qū)別

    K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺(tái)部署高可用 Redis 集群

    前言 Redis 是在開(kāi)發(fā)過(guò)程中經(jīng)常用到的緩存中間件,為了考慮在生產(chǎn)環(huán)境中穩(wěn)定性和高可用,Redis通常采用集群模式的部署方式。 在制定Redis集群的部署策略時(shí),常規(guī)部署在虛擬機(jī)上的
    的頭像 發(fā)表于 07-03 15:30 ?1063次閱讀
    K8S學(xué)習(xí)教程(二):在 PetaExpress KubeSphere容器平臺(tái)部署高可用 <b class='flag-5'>Redis</b> 集群

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品