日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis 计数 java_redission计数器实现,redisTemplate计数器

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 计数 java_redission计数器实现,redisTemplate计数器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在redission 2.9.0版本之前是有BUG,在實現下面代碼時,第一次是成功的,但是在第二次就會失敗:

RedissonClient client;//client參考別的demo

RMapCache mapCache = client.getMapCache("nameSpace");

mapCache.putIfAbsent("redisKey", 0, 1, TimeUnit.DAYS);//當不存在redisKey時,就放置這個redis,存在則不放置

在redission 2.9.0(3.4.1)版本之后修復BUG,多次操作是成功的:

RedissonClient client = RedissonHolder.getClient();//具體實現參考別的demo

RMapCache mapCache = client.getMapCache("nameSpace",IntegerCodec.INSTANCE);

String redisKey = channel + "-" + userId;

mapCache.putIfAbsent("redisKey", 0, 1, TimeUnit.DAYS);

logger.info("獲取redis計數器:{}", redisKey);

int incr = mapCache.addAndGet(redisKey, 1);//加1并獲取計算后的值

參考pom:

org.redisson

redisson

3.4.1

可參考redis demo:

import java.io.IOException;

import java.io.InputStream;

import java.util.ResourceBundle;

import org.redisson.Redisson;

import org.redisson.api.RedissonClient;

import org.redisson.config.Config;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class RedissonHolder {

private static final Logger LOGGER = LoggerFactory.getLogger(RedissonHolder.class);

private static final RedissonHolder HOLDER = new RedissonHolder();

private RedissonClient redisson;

private RedissonHolder() {

String location = ResourceBundle.getBundle("redisson").getString("redisson.json.location");

InputStream inputStream = RedissonHolder.class.getClassLoader().getResourceAsStream(location);

Config config = null;

try {

config = Config.fromJSON(inputStream);

} catch (IOException e) {

LOGGER.error("獲取Redisson配置文件失敗", e);

}

this.redisson = Redisson.create(config);

}

public static RedissonClient getClient() {

return HOLDER.redisson;

}

}

redisson.properties(等號后面全部換成一行) :

redisson.json.location ={"singleServerConfig":{"idleConnectionTimeout":10000,

"pingTimeout":1000,

"connectTimeout":10000,

"timeout":5000,

"retryAttempts":5,

"retryInterval":1500,

"reconnectionTimeout":3000,

"failedAttempts":3,

"password":"root",

"subscriptionsPerConnection":5,

"clientName":null,

"address":"redis://my.redis.com:6379",

"subscriptionConnectionMinimumIdleSize":1,

"subscriptionConnectionPoolSize":50,

"connectionMinimumIdleSize":10,

"connectionPoolSize":64,

"database":0,

"dnsMonitoring":false,

"dnsMonitoringInterval":5000

},

"threads":0,

"nettyThreads":0,

"codec":null,

"useLinuxNativeEpoll":false

}

基于 springboot 的 redisTemplate計數器

redisTemplate基本配置參考 http://www.cnblogs.com/tietazhan/p/7479585.html

然后就可以直接使用內部函數

redisTemplate.opsForHash().increment(H var1, HK var2, long var3);

第一個為緩存key值,第二個為hashKey值,第三個為增量值。

總結

以上是生活随笔為你收集整理的redis 计数 java_redission计数器实现,redisTemplate计数器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。