redis mysql 原子计数器_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值,第三个为增量值。

Hadoop学习笔记—7.计数器与自定义计数器

一.Hadoop中的计数器 计数器:计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们通常可以在程序的某个位置插入计数器,用来记录数据或者进度的变化情况,它比日志更便利进行分析. ...

php简单计数器程序(文本计数器、图形计数器)

分享二个php计数器的例子. 1).文本计数器 <?php $countfile="/count.txt";  //设置保存数据的文件 if (!file_exists($c ...

Hadoop之计数器与自定义计数器及Combiner的使用

1,计数器: 显示的计数器中分为四个组,分别为:File Output Format Counters.FileSystemCounters.File Input Format Counters和Ma ...

9&period;1hadoop 内置计数器、自定义枚举计数器、Streaming计数器

1.1  计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...

深入理解CSS计数器

× 目录 [1]创建计数器 [2]使用计数器 [3]DEMO 前面的话 我们对计数器已经不陌生了,有序列表中的列表项标志就是计数器. 创建计数器 创建计数器的基础包括两个方面,一是能重置计数器的起点, ...

OC-内存管理-基本原理与引用计数器

基本原理 1. 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用 ...

04-时序逻辑电路设计之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线--普利斯队长精心奉献 实验目的:以计数器为例学会简单的时序逻辑电路设计 实验平台:芯航线FPGA核心板 实验原理: 时序逻辑电路是指电路任何时刻的稳态输出不仅取决于当前的输入,还与前一时刻输入 ...

&period;Net最佳实践3:使用性能计数器收集性能数据

本文值得阅读吗? 本文讨论我们如何使用性能计数器从应用程序收集数据.我们将先了解的基本知识,然后我们将看到一个简单的示例,我们将从中收集一些性能数据. 介绍: - 我的应用程序的性能是最好的,像火箭 ...

Mysql数据库中的计数器表实时更新

如果某个应用中存在计数器,例如网站的总访问量.用户的粉丝数.文件下载数等等.如果相关应用在Mysql数据库的表中保存计数器,在更新计数器的时候可能会碰到并发问题.例如在web应用中,记录网站的点击次数 ...

随机推荐

测试Servlet生命周期学习笔记

测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

IOC和AOP使用扩展 多种方式实现依赖注入

多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 sett ...

P1-概率论基础(Primer on Probability Theory)

2.1概率密度函数 2.1.1定义 设p(x)为随机变量x在区间[a,b]的概率密度函数,p(x)是一个非负函数,且满足 注意概率与概率密度函数的区别. 概率是在概率密度函数下对应区域的面积,如上图右 ...

【OpenStack】OpenStack系列8之Nova详解 Neutron详解

Neutron下载安装 下载:git clone -b stable/icehouse https://github.com/openstack/neutron.git pip install -r ...

org&period;springframework&period;core&period;NestedIOException

今天遇到的一个小异常,报错信息如下: 2013-11-13 10:00:32 org.apache.catalina.core.StandardContext listenerStart严重: Exc ...

linux 安装scons

scons是一个Python写的自动化构建工具,需要安装python和scons后才能运行,能够跨平台.其集成功能类似于autoconf/automake ,是一个简洁可靠的工具.现在很多系统都自带 ...

Sciter使用心得

1. div双击事件  $(div).onMouse = function(evt) {       switch(evt.type) {          case Event.MOUSE_DCLI ...

搭建linux下teamspeak3多人语音服务器

最近项目中新的需求,需要支持多人在线实时通话.就安装测试一下teamspeak.http://www.teamspeak.com/ 主页有服务器版本和客户端版本供下载安装.软硬件环境: melot@m ...

Android权限设置android&period;permission完整列表

android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties”表在checkin数据库中,改值可以修改上传( Allows re ...

Linux文件上传工具下载工具及详细使用说明

对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值