redis的get/hget等操作中,返回的数据都是string。即使往里存数字,返回的还是string。这一点在javascript中尤其要注意。
而javascript中,使用字符串进行加减法时,会有不同效果:
加号既可以作为加法运算,也可以作为字符串连接。如果两个操作数中的任何一个是字符串,则是字符串连接,否则就是加法;
而减号永远是做减法,不会字符串删除。
没有搞懂以上两点,导致出现如下问题:
往redis中存了一个数字:
redis.set('count', 10);
取出来,然后加1:
redis.get('count', function(err, reply) {
if (err) xxx;
var count = reply;
count = count + 1;
redis.set('count', count);
}
按照上面说的,再取出'count'时,不是希望的11,而是101。
如果使用count +=1,效果一样,仍然是字符串相加,结果为101.
如果换成count++,效果就不一样了,此时count先转换为数字,然后加一,变为11。
而如果换成count = count - 1, count -= 1, count --,则不会有任何问题,javascript先把count转化为数字,然后再减。
所以对于从redis取出的数字,正确的做法是先转化为数字,然后再作操作:
redis.get('count', function(err, reply) {
if (err) xxx;
var count = parseInt(reply);
count = count + 1;
redis.set('count', count);
}
从java转过来的人,比如我,对字符串自动转化为数字很容易混淆,导致看半天才发现问题。
分享到:
相关推荐
使用 Flask 和 Redis 用 Python 编写的图像板。 请注意: 这是一个个人项目,除个人用途外,没有记录或意图。 因此,代码和内容只是反映了这一点。 这是一个快速组合在一起的原型。 代码质量和架构一直不是重点。
它可以让您更有效地使用 redis 服务器,并且适用于每秒数千个请求的高负载项目。 如果您需要多个服务器(系统节点)上的公共数据,请使用此库。 前任。 缓存、计数器、集合......如果你只使用一个 redis-server ...
使用MySQL和Redis数据库 写JavaScript 与Bootstrap和CSS一起设计网站样式 与节点一起将jquery-ui和fontawesome包拉入应用程序 缓存数据 创建REST API功能 通过Valet,WampServer和Docker服务应用程序 通过...
包含 golang、redis 和 rabbitmq 的 Vagrant box 安装步骤 下载流浪者: ://www.vagrantup.com/downloads.html 下载 Virtual Box: : $ cd vagrant-provision $无业游民条款 $ vagrant up(这一步需要一点时间...
使用 Jwt + Shiro做登录验证和权限校验;使用ElasticSearch作为检索服务;使用Mysql作为持久化数据库以及Redis缓存中间件。小程序端主要使用原生框架进行开发,使用ColorUI作为UI框架,wemark组件进行markdown渲染。...
为了实现这一点,我们将在Pi上使用带有Redis的NodeJS。 Pi和Arduino通过串行USB连接进行连接。 Arduino将向Pi发送一条消息,让其知道LED何时启动和停止发光。树莓派节点JS 如何在pi上安装NodeJS。雷迪斯需要Redis...
goos-nodejs 项目的Node.js实现概述该项目可以看作是使用在Node.js中对GOOS Auction Sniper的重新解释。 已经进行了一些设计更改,以使该项目更适合JavaScript的思维方式或生态系统: UI是HTML,并使用应用程序通过...
希望接触均值堆栈中的“ M” 您是如何第一次意识到这一点的? 这是与angular,node.js和express的常见配对 它可以解决什么问题,以及如何(从概念上)解决问题? MongoDB是非关系数据库。 它特别擅长处理类似JSON...
它在前端使用React,在后端使用Hapi,Postgres和Redis。 从中提取事件并进行缓存,以减少将来的查找时间。 根据使用构建的数据库查询查询。 建议您根据简单的体裁匹配算法,在每分钟进行一次活动,因此有很大的...
docker-compose.yml docker/eventtoolbox-devenv中有一个docker-compose.yml文件,可用于使用Docker启动开发环境(PostgreSQL,Redis和Adminer)。 您可以通过运行npm run devenv:up来做到这一点。 发展 快速开始 ...
同时依赖 mongodb 和 redis ,配置参数参见 conf/default.conf.js 。 工具包 npm install forever -g npm install component -g npm install grunt-cli -g npm install 开始开发 make init make grunt make make 的...
我在录音部分中使用了很多此回购协议 todo //重构UI,以实现更好的跨浏览器和移动兼容性。 部署的链接(该链接由一个免费的Heroku帐户托管,因此需要花很长时间才能加载-请耐心等待): ://vw-logjam.herokuapp....
但是为了使服务更快并适应 DataSF 的可用性(例如,数据集在 2015 年 1 月 17 日晚上离线),API 服务器每小时将食品卡车列表缓存到 Redis 中。 解决方案的范围和重点 如前所述,该服务由后端和前端解决方案组成,...
支持 IP 地址的 REDIS 和内存中哈希图 到期 - 在有限的时间段内或永远阻止或允许 IP 在黑名单(允许除部分之外的所有)或白名单(除部分之外的所有)之间无缝切换 根据性能配置删除过期密钥的时间间隔。 使用简单...
文章无需自己写,可以使用作者自己编写的全自动爬虫工具即可,只需轻轻一点,万千文章到手。仓库地址GitHub: Gitee:目标虽说博客系统已不是新鲜玩意,但是我觉得把一个普通的项目做的更完善、功能更多的话你就不普通...
Redis v2.8.x——服务端操作存储 Node.js v0.12.x 或 io.js 最新版本 - 运行服务器 NPM v2.5.x - 包管理器 安装 确保您之前已阅读要求部分。 npm install 模块列表 - 图标 - 使用可观察流进行异步编程的 API ...
“我们打算做一个系统监控系统,包括MP监控,接口监控,mysql监控,redis监控和日志监控,内部人员使用,观察系统的健康度和稳定性,来人参观也可以展示一下,所以要尽可能炫酷一点。”“嗯,然后呢”我记完,抬头一...
鉴权server 后端代码部分 相关技术: Koa Redis Cookie ...cookie向服务端比对vkey的时候,查一次,然后这玩意存redis,再设定一段期限,这样频繁访问的时候稳妥一点 流程: 前端登陆 --> (账号密码) --> 颁
适合于有一点编程基础的同学共同学习和了解。若有任何疑问可以在我的博客上私信我或给我留言,收到后会第一时间回复,谢谢。望共勉! 如果觉得不错,请star!你的star是我的动力。 博客地址: : 联系邮箱: 1. 2. ...
聊天应用 公开聊天室应用 要运行,请键入“ npm start” 变更记录: 2/11 ____第一次提交需要实现“注销”功能我想最终使它... 我还花了一些时间研究诸如Redis作为消息队列和MongoDB用于会话存储的解决方案。 这些最