最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis?Template.opsForValue()中方法實(shí)例詳解

 更新時(shí)間:2023年05月24日 10:07:29   作者:FighterLiu  
這篇文章主要介紹了redis?Template.opsForValue()中方法講解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

查看源碼可以看到redisTemplate.opsForValue()中的方法都定義在ValueOperations<K, V> 中,該接口中一共有17個(gè)方法:

public interface ValueOperations<K, V> {
	void set(K key, V value);
	void set(K key, V value, long timeout, TimeUnit unit);
	Boolean setIfAbsent(K key, V value);
	void multiSet(Map<? extends K, ? extends V> map);
	Boolean multiSetIfAbsent(Map<? extends K, ? extends V> map);
	V get(Object key);
	V getAndSet(K key, V value);
	List<V> multiGet(Collection<K> keys);
	Long increment(K key, long delta);
	Double increment(K key, double delta);
	Integer append(K key, String value);
	String get(K key, long start, long end);
	void set(K key, V value, long offset);
	Long size(K key);
	Boolean setBit(K key, long offset, boolean value);
	Boolean getBit(K key, long offset);
	RedisOperations<K, V> getOperations();
}

下面我們一個(gè)一個(gè)來(lái)講解

void set(K key, V value)

方法含義:新增一個(gè)字符串類(lèi)型的值,key是鍵,value是值

使用方法:

redisTemplate.opsForValue().set("stringkey", "stringvalue");

void set(K key, V value, long timeout, TimeUnit unit)

方法含義:新增一個(gè)字符串類(lèi)型的值,并且設(shè)置變量值的過(guò)期時(shí)間。key是鍵,value是值,timeout 過(guò)期時(shí)間,unit 過(guò)期時(shí)間單位。

unit 過(guò)期時(shí)間單位取值如下:

DAYS:天時(shí)間單元代表24小時(shí)
HOURS:小時(shí)時(shí)間單元代表60分鐘
MICROSECONDS:微秒時(shí)間單元代表千分之一毫秒
MILLISECONDS:毫秒時(shí)間單元代表千分之一秒
MINUTES:分鐘時(shí)間單元代表60秒
NANOSECONDS:納秒時(shí)間單元代表千分之一微秒
SECONDS:時(shí)間單元代表1秒

使用方法,把timeoutkey對(duì)應(yīng)的值設(shè)置過(guò)期時(shí)間為10秒:

redisTemplate.opsForValue().set("timeoutkey", "timeoutvalue", 10, TimeUnit.SECONDS);

Boolean setIfAbsent(K key, V value)

方法含義:如果鍵不存在則新增,存在則不改變已經(jīng)有的值。

使用方法:

redisTemplate.opsForValue().setIfAbsent("newkey", "newvalue");

V get(Object key)

方法含義:獲取key鍵對(duì)應(yīng)的值

使用方法:

redisTemplate.opsForValue().get("stringkey");

String get(K key, long start, long end)

方法含義:截取key鍵對(duì)應(yīng)值的字符串,從開(kāi)始下標(biāo)位置開(kāi)始到結(jié)束下標(biāo)的位置(包含結(jié)束下標(biāo))的字符串。下標(biāo)從1開(kāi)始,如果stringkey對(duì)應(yīng)的值為value,那么下面這個(gè)方法返回為:al

使用方法:

redisTemplate.opsForValue().get("stringkey", 2, 3);

V getAndSet(K key, V value)

方法含義:獲取原來(lái)key鍵對(duì)應(yīng)的值并重新賦新值

使用方法:

redisTemplate.opsForValue().getAndSet("stringkey", "newvalue");

void set(K key, V value, long offset)

方法含義:覆蓋從指定位置開(kāi)始的值

使用方法:

redisTemplate.opsForValue().set("stringkey", "a", 1);?

如下三個(gè)方法放在一起講:

void multiSet(Map<? extends K, ? extends V> map)

Boolean multiSetIfAbsent(Map<? extends K, ? extends V> map)

List<V> multiGet(Collection<K> keys)

方法含義:multiSet:設(shè)置map集合到redis;multiSetIfAbsent:如果對(duì)應(yīng)的map集合名稱(chēng)不存在,則添加,如果存在則不做修改;multiGet:根據(jù)集合取出對(duì)應(yīng)的value值。

先使用multiSet設(shè)置相應(yīng)的值,如下:

Map map = new HashMap();
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        redisTemplate.opsForValue().multiSet(map);

在使用multiGet獲得相應(yīng)的值

List list = new ArrayList();
        list.add("key1");
        list.add("key2");
        list.add("key3");
        List<String> valueList = redisTemplate.opsForValue().multiGet(list);
        for (String value2 : valueList) {
            System.out.println("通過(guò)multiGet(Collection<K> keys)方法獲取map值:" + value2);
        }

打印結(jié)果如下:

使用multiSetIfAbsent 設(shè)置相應(yīng)的值,map集合中的key與之前一樣,valeu設(shè)置的不一樣

Map map1 = new HashMap();
        map1.put("key1", "value11");
        map1.put("key2", "value22");
        map1.put("key3", "value33");
        List list1 = new ArrayList();
        list1.add("key1");
        list1.add("key2");
        list1.add("key3");
        redisTemplate.opsForValue().multiSetIfAbsent(map1);
        List<String> valueList1 = redisTemplate.opsForValue().multiGet(list1);
        for (String value1 : valueList1) {
            System.out.println("通過(guò)multiGet(Collection<K> keys)方法獲取map值:" + value1);
        }

打印結(jié)果如下,我們可以看到?jīng)]有做任何修改

使用multiSetIfAbsent 設(shè)置相應(yīng)的值,map集合中的key,valeu設(shè)置的都不一樣

Map map1 = new HashMap();
        map1.put("key11", "value11");
        map1.put("key21", "value22");
        map1.put("key31", "value33");
        List list1 = new ArrayList();
        list1.add("key11");
        list1.add("key21");
        list1.add("key31");
        redisTemplate.opsForValue().multiSetIfAbsent(map1);
        List<String> valueList1 = redisTemplate.opsForValue().multiGet(list1);
        for (String value1 : valueList1) {
            System.out.println("通過(guò)multiGet(Collection<K> keys)方法獲取map值:" + value1);
        }

打印結(jié)果如下,我們可以看到新增了3個(gè)key:

備注說(shuō)明:multiSetIfAbsent 只要map中有一個(gè)key存在,則都不做修改。

Long increment(K key, long delta)
Double increment(K key, double delta)

方法含義:以增量的方式將值存儲(chǔ)在變量中,第二個(gè)參數(shù)為遞增因子

使用方法:

redisTemplate.opsForValue().set("doublevalue", 1);
        redisTemplate.opsForValue().increment("doublevalue", 1.2);//以1.2遞增,遞增后為2.2
        redisTemplate.opsForValue().increment("doublevalue", 1);//以1遞增,遞增后為3.2

Integer append(K key, String value)

方法含義:在原有的值基礎(chǔ)上新增字符串到末尾

使用方法:

redisTemplate.opsForValue().set("stringkey", "value");
redisTemplate.opsForValue().append("stringkey", "appendValue");

備注說(shuō)明:如果append方法不起效果需要進(jìn)行配置將 template.setValueSerializer(jackson2JsonRedisSerializer);修改為:template.setValueSerializer(new StringRedisSerializer());這個(gè)是因?yàn)樾蛄谢脑颍琑edisTemplateput進(jìn)去的值是序列化成二進(jìn)制后的,但是append的值是直接加的。所以get的時(shí)候反序列化直接變成空值了。如果你存的值是字符串類(lèi)型,建議直接使用StringRedisTemplate,這個(gè)不會(huì)序列化成二進(jìn)制,append是可以用的。而且直接在redis客戶(hù)端存的值也能取到

Long size(K key)

方法含義:獲取指定字符串的長(zhǎng)度

使用方法:

Long size = redisTemplate.opsForValue().size("stringkey");

Boolean setBit(K key, long offset, boolean value)
Boolean getBit(K key, long offset)

方法含義:setBit:key鍵對(duì)應(yīng)的值value對(duì)應(yīng)的ascii碼,在offset的位置(從左向右數(shù))變?yōu)関alue;getBit:判斷指定的位置ASCII碼的bit位是否為true或者false

使用方法:

redisTemplate.opsForValue().set("stringkey", "value");
        redisTemplate.opsForValue().setBit("stringkey", 1, true);
        boolean flag= redisTemplate.opsForValue().getBit("stringkey", 1);

到此這篇關(guān)于redis Template.opsForValue()中方法講解的文章就介紹到這了,更多相關(guān)redis Template.opsForValue()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Redis緩存擊穿問(wèn)題(互斥鎖、邏輯過(guò)期)

    解決Redis緩存擊穿問(wèn)題(互斥鎖、邏輯過(guò)期)

    本文介紹了背景緩存擊穿問(wèn)題及兩種常見(jiàn)解決方案:互斥鎖與邏輯過(guò)期,互斥鎖通過(guò)獲取鎖來(lái)確保數(shù)據(jù)最新,但響應(yīng)速度慢,可能有死鎖風(fēng)險(xiǎn),邏輯過(guò)期利用過(guò)期字段判斷緩存是否過(guò)期,提高性能但不保證一致性,需要額外內(nèi)存,通過(guò)JMeter測(cè)試,兩種方案都能有效緩解緩存擊穿問(wèn)題
    2026-02-02
  • Redis不同數(shù)據(jù)類(lèi)型的命令語(yǔ)句詳解

    Redis不同數(shù)據(jù)類(lèi)型的命令語(yǔ)句詳解

    這篇文章主要介紹了Redis不同數(shù)據(jù)類(lèi)型的命令語(yǔ)句,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • 詳解redis在服務(wù)器linux下啟動(dòng)的相關(guān)命令(安裝和配置)

    詳解redis在服務(wù)器linux下啟動(dòng)的相關(guān)命令(安裝和配置)

    這篇文章主要介紹了redis在服務(wù)器linux下的啟動(dòng)的相關(guān)命令(安裝和配置),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • redis服務(wù)啟動(dòng)與停止方式

    redis服務(wù)啟動(dòng)與停止方式

    這篇文章主要介紹了redis服務(wù)啟動(dòng)與停止方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Redis排序后MySQL查詢(xún)亂序問(wèn)題的原因及解決方法

    Redis排序后MySQL查詢(xún)亂序問(wèn)題的原因及解決方法

    在日常開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要按特定順序展示數(shù)據(jù)的場(chǎng)景,為了提升性能,很多開(kāi)發(fā)者會(huì)用Redis做排序存儲(chǔ),再用MySQL查詢(xún)?cè)敿?xì)數(shù)據(jù),這篇博客就詳細(xì)拆解這個(gè)高頻問(wèn)題,從錯(cuò)誤場(chǎng)景、根本原因,到具體解決方案,需要的朋友可以參考下
    2026-03-03
  • Redis持久化解讀

    Redis持久化解讀

    Redis是一種內(nèi)存級(jí)數(shù)據(jù)庫(kù),提供高速讀寫(xiě)性能,但數(shù)據(jù)易失,它支持三種持久化方式:RDB(快照持久化)、AOF(追加文件持久化)和混合持久化,RDB通過(guò)快照將數(shù)據(jù)保存到磁盤(pán),AOF記錄所有寫(xiě)操作命令,混合持久化結(jié)合兩者優(yōu)點(diǎn)
    2025-01-01
  • Redis?的內(nèi)存淘汰策略和過(guò)期刪除策略的區(qū)別

    Redis?的內(nèi)存淘汰策略和過(guò)期刪除策略的區(qū)別

    這篇文章主要介紹了Redis?的內(nèi)存淘汰策略和過(guò)期刪除策略的區(qū)別,Redis?是可以對(duì)?key?設(shè)置過(guò)期時(shí)間的,因此需要有相應(yīng)的機(jī)制將已過(guò)期的鍵值對(duì)刪除,而做這個(gè)工作的就是過(guò)期鍵值刪除策略
    2022-07-07
  • Redis7.0部署集群的實(shí)現(xiàn)步驟

    Redis7.0部署集群的實(shí)現(xiàn)步驟

    本文主要介紹了Redis7.0部署集群的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • redis集群部署方案和redis常用命令

    redis集群部署方案和redis常用命令

    本文介紹了部署Redis集群的詳細(xì)步驟以及常用命令和管理操作,同時(shí)提醒了生產(chǎn)環(huán)境中的注意事項(xiàng),如配置持久化、密碼認(rèn)證和時(shí)鐘同步,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Redis實(shí)戰(zhàn)之Redis實(shí)現(xiàn)異步秒殺優(yōu)化詳解

    Redis實(shí)戰(zhàn)之Redis實(shí)現(xiàn)異步秒殺優(yōu)化詳解

    這篇文章主要給大家介紹了Redis實(shí)戰(zhàn)之Redis實(shí)現(xiàn)異步秒殺優(yōu)化方法,文章通過(guò)圖片和代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的同學(xué)可以自己動(dòng)手試一下
    2023-09-09

最新評(píng)論

临泉县| 宁海县| 阳原县| 奉新县| 东方市| 溧阳市| 临夏县| 通江县| 江都市| 吴堡县| 房山区| 乐清市| 江安县| 台东市| 和林格尔县| 浪卡子县| 七台河市| 威远县| 岑溪市| 梁河县| 新竹县| 绥芬河市| 泰州市| 明光市| 南充市| 普宁市| 陆丰市| 濮阳县| 鄂伦春自治旗| 新田县| 柳林县| 门源| 河间市| 白沙| 沅江市| 龙泉市| 云阳县| 海阳市| 临汾市| 长沙县| 方正县|