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

使用RedisAtomicLong優(yōu)化性能問(wèn)題

 更新時(shí)間:2022年11月23日 08:35:07   作者:飯團(tuán)小哥哥iop  
這篇文章主要介紹了使用RedisAtomicLong優(yōu)化性能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

RedisAtomicLong優(yōu)化性能

在項(xiàng)目中許多過(guò)這樣的需求,記錄留做備忘。

需要?jiǎng)?chuàng)建一個(gè)遞增序列,這個(gè)序列會(huì)提供給多個(gè)應(yīng)用來(lái)使用,這樣就需要保持序列的原子遞增。

RedisAtomicLong

spring-data-redis包中提供的,可以對(duì)數(shù)據(jù)中的Long類型進(jìn)行原子性操作的類,下面是這個(gè)類的頭:

/**
?* Atomic long backed by Redis. Uses Redis atomic increment/decrement and watch/multi/exec operations for CAS
?* operations.
?* ?* @see java.util.concurrent.atomic.AtomicLong
?* @author Costin Leau
?* @author Thomas Darimont
?* @author Christoph Strobl
?* @author Mark Paluch
?*/
public class RedisAtomicLong extends Number implements Serializable, BoundKeyOperations<String> {

我們可以看到j(luò)ava.util.concurrent.atomic.AtomicLong,和java自帶的atomic包一樣進(jìn)行原子性操作,兩者不同的是:

  • AtomicLong只能在一個(gè)應(yīng)用中使用
  • RedisAtomicLong可以在所有與Redis有連接的應(yīng)用中使用

開(kāi)始優(yōu)化

應(yīng)用初始化時(shí)創(chuàng)建RedisAtomicLong實(shí)例。

?//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.jiu.common.redis;

import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.support.atomic.RedisAtomicLong;

public class RedisSequenceFactory {
? ? private static final Logger log = LoggerFactory.getLogger(RedisSequenceFactory.class);
? ? @Autowired
? ? private ObjectRedisTemplate<Integer> redisTemplate;

? ? public RedisSequenceFactory() {
? ? }

? ? public void set(String key, long value) {
? ? ? ? RedisAtomicLong counter = new RedisAtomicLong(key, this.redisTemplate.getConnectionFactory());
? ? ? ? counter.set(value);
? ? }

? ? public long generate(String key, int increment) {
? ? ? ? RedisAtomicLong counter = new RedisAtomicLong(key, this.redisTemplate.getConnectionFactory());
? ? ? ? return counter.addAndGet((long)increment);
? ? }

? ? public List<Long> generateBatch(String key, int increment, int size) {
? ? ? ? RedisAtomicLong counter = new RedisAtomicLong(key, this.redisTemplate.getConnectionFactory());
? ? ? ? long max = counter.addAndGet((long)(increment * size));
? ? ? ? long min = max - (long)(increment * (size - 1));
? ? ? ? List<Long> list = new ArrayList();
? ? ? ? list.add(min);

? ? ? ? for(int i = 1; i < size; ++i) {
? ? ? ? ? ? list.add(min + (long)(increment * i));
? ? ? ? }

? ? ? ? return list;
? ? }

? ? public long queryValue(String key) {
? ? ? ? Integer val = (Integer)this.redisTemplate.get(key);
? ? ? ? return val == null ? 0L : (long)val.intValue();
? ? }
}

測(cè)試代碼

public static String tradeIdIncRedisKey = "order:orderid_inc";
? ? ?@Test
? ? public long generateId(){
? ? ? ? return redisSequenceFactory.generate(tradeIdIncRedisKey,1);
? ? }

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

相關(guān)文章

  • Java信號(hào)量全解析

    Java信號(hào)量全解析

    這篇文章主要介紹了Java信號(hào)量的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • java語(yǔ)法糖之jdk迭代的新特性匯總

    java語(yǔ)法糖之jdk迭代的新特性匯總

    什么是語(yǔ)法糖?泛型、自動(dòng)裝箱拆箱、變長(zhǎng)參數(shù)、增強(qiáng)for循環(huán)、switch字符類型、lambda表達(dá)式等,這些其實(shí)都是語(yǔ)法糖。這篇文章主要給大家介紹了關(guān)于java語(yǔ)法糖之jdk迭代的新特性的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Java基于Guava Retrying實(shí)現(xiàn)重試功能

    Java基于Guava Retrying實(shí)現(xiàn)重試功能

    這篇文章主要介紹了Java基于Guava Retrying實(shí)現(xiàn)重試功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java異常處理執(zhí)行順序詳解try catch finally

    java異常處理執(zhí)行順序詳解try catch finally

    try catch語(yǔ)句是java語(yǔ)言用于捕獲異常并進(jìn)行處理的標(biāo)準(zhǔn)方式,對(duì)于try catch及try catch finally執(zhí)行順序必須有深入的了解
    2021-10-10
  • Java+Selenium調(diào)用JavaScript的方法詳解

    Java+Selenium調(diào)用JavaScript的方法詳解

    這篇文章主要為大家講解了java在利用Selenium操作瀏覽器網(wǎng)站時(shí)候,有時(shí)會(huì)需要用的JavaScript的地方,代碼該如何實(shí)現(xiàn)呢?快跟隨小編一起學(xué)習(xí)一下吧
    2023-01-01
  • java實(shí)現(xiàn)圖片加水印效果

    java實(shí)現(xiàn)圖片加水印效果

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖片加水印效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • java實(shí)現(xiàn)角色及菜單權(quán)限的項(xiàng)目實(shí)踐

    java實(shí)現(xiàn)角色及菜單權(quán)限的項(xiàng)目實(shí)踐

    在Java中,實(shí)現(xiàn)角色及菜單權(quán)限管理涉及定義實(shí)體類、設(shè)計(jì)數(shù)據(jù)庫(kù)表、實(shí)現(xiàn)服務(wù)層和控制器層,這種管理方式有助于有效控制用戶權(quán)限,適用于企業(yè)級(jí)應(yīng)用,感興趣的可以一起來(lái)了解一下
    2024-09-09
  • 關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore

    關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore

    這篇文章主要介紹了關(guān)于springboot忽略接口,參數(shù)注解的使用ApiIgnore,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java?String源碼contains題解重復(fù)疊加字符串匹配

    Java?String源碼contains題解重復(fù)疊加字符串匹配

    這篇文章主要為大家介紹了Java?String源碼contains題解重復(fù)疊加字符串匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 詳解Maven倉(cāng)庫(kù)之本地倉(cāng)庫(kù)、遠(yuǎn)程倉(cāng)庫(kù)

    詳解Maven倉(cāng)庫(kù)之本地倉(cāng)庫(kù)、遠(yuǎn)程倉(cāng)庫(kù)

    這篇文章主要介紹了Maven倉(cāng)庫(kù)之本地倉(cāng)庫(kù)、遠(yuǎn)程倉(cāng)庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

营山县| 屏东市| 紫阳县| 兴业县| 屯门区| 岳普湖县| 镶黄旗| 吉水县| 杭锦旗| 镶黄旗| 东平县| 湖口县| 渝中区| 江门市| 宝清县| 惠水县| 宁武县| 宜兰市| 分宜县| 三河市| 乐昌市| 资溪县| 遂宁市| 伊金霍洛旗| 鲁山县| 安义县| 怀仁县| 临漳县| 和硕县| 三原县| 石棉县| 河东区| 南陵县| 江陵县| 开原市| 原阳县| 措勤县| 沂源县| 灌阳县| 文登市| 卢氏县|