`
spartan1
  • 浏览: 365099 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript和redis使用中的一点小问题

 
阅读更多

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转过来的人,比如我,对字符串自动转化为数字很容易混淆,导致看半天才发现问题。

 

分享到:
评论

相关推荐

    前端开源库-sand-redis

    **前端开源库-Sand-Redis详解** 在前端开发中,数据的实时性和高效性往往成为提升用户体验的关键因素。...然而,需要注意的是,直接在前端使用Redis可能带来的安全问题,因此在使用时需谨慎评估并采取相应的安全措施。

    hboard:使用 Flask 和 Redis 用 Python 编写的图像板

    使用 Flask 和 Redis 用 Python 编写的图像板。 请注意: 这是一个个人项目,除个人用途外,没有记录或意图。 因此,代码和内容只是反映了这一点。 这是一个快速组合在一起的原型。 代码质量和架构一直不是重点。

    获取经纬度点的高程值

    在IT行业中,获取地表特定位置的高程值是一项常见的任务,这通常涉及到地理信息系统(GIS)和遥感技术。本项目聚焦于通过输入...这样的设计体现了IT行业中解决复杂问题的综合能力,以及对高效能计算和实时反馈的重视。

    node-multiredis:用于处理分布式 Redis 服务器的客户端库

    它可以让您更有效地使用 redis 服务器,并且适用于每秒数千个请求的高负载项目。 如果您需要多个服务器(系统节点)上的公共数据,请使用此库。 前任。 缓存、计数器、集合......如果你只使用一个 redis-server ...

    【前端】字节跳动面经真题+面经.pdf

    31. LUA脚本:在Redis中使用LUA可以执行原子操作,提高数据一致性。 32-33. URL解析至页面展示:涉及DNS解析、TCP连接建立、HTTP请求、页面渲染等步骤,递归解析是指通过多次调用自身解决问题的方法。 34-35. TCP...

    基于PHP的Niushop一点牛社区团购源码.zip

    4. **前端技术**:虽然主要讨论PHP,但Niushop的前端可能使用HTML、CSS和JavaScript,实现用户界面和交互效果。熟悉这些技术可以帮助定制和优化用户界面。 5. **框架应用**:Niushop可能基于某个PHP框架,如Laravel...

    关于缓存的一点心得

    关于缓存的一点心得 一、缓存的基本概念与分类 缓存技术是现代软件开发中提高系统性能的重要手段之一,特别是在Web应用中扮演着关键角色。根据存储内容的不同,缓存可以分为两大类:页面缓存和数据缓存。 1. **...

    PHP实例开发源码-php先锋内容管理系统.zip

    10. **前端技术**:除了PHP后端,还会涉及到HTML、CSS、JavaScript等前端技术,可能使用Bootstrap、Vue.js等框架优化界面和交互。 通过对这个系统的源码进行学习,开发者不仅可以掌握PHP语言的应用,还能了解到Web...

    基于python的安全即时通讯系统项目源码+详细项目说明.zip

    11. **错误处理与日志记录**:良好的错误处理和日志记录能帮助开发者追踪和修复问题,Python的logging库可以实现这一点。 12. **测试与调试**:学习单元测试、集成测试,使用unittest或pytest等工具确保代码质量。 ...

    musiclaravel:我对iTunes的一点看法

    使用MySQL和Redis数据库 写JavaScript 与Bootstrap和CSS一起设计网站样式 与节点一起将jquery-ui和fontawesome包拉入应用程序 缓存数据 创建REST API功能 通过Valet,WampServer和Docker服务应用程序 通过...

    vagrant-provision:包含 golang、redis 和 rabbitmq 的 Vagrant box

    包含 golang、redis 和 rabbitmq 的 Vagrant box 安装步骤 下载流浪者: ://www.vagrantup.com/downloads.html 下载 Virtual Box: : $ cd vagrant-provision $无业游民条款 $ vagrant up(这一步需要一点时间...

    PHP聊天室源代码

    通过研究这个PHP聊天室源代码,开发者不仅可以掌握PHP编程技巧,还可以了解实际项目中的问题解决策略和最佳实践。同时,对于希望进一步改进和创新的人来说,这是一个很好的起点,可以根据自己的需求进行功能扩展和...

    PHP实例开发源码—FFS5-Mini v120731 最终版 php网络文件存储分享系统.zip

    5. **前端界面**:FFS5-Mini 可能使用HTML、CSS和JavaScript构建用户界面,提供友好的文件操作体验。AJAX技术可能被用来实现无刷新的文件上传和操作,提高用户体验。 6. **安全性**:在文件存储和分享系统中,数据...

    PHP实例开发源码—优客365网站导航源码 开源版.zip

    在"使用须知.txt"文件中,可能包含了安装、配置、运行和升级系统的详细步骤,以及版权信息和许可协议。而"132678273334073881"可能是一个文件或目录名,具体用途需打开压缩包查看。总的来说,优客365网站导航源码是...

    PHP实例开发源码-一库仓储php开源企业管理系统.zip

    10. **安全措施**:考虑到数据安全,源码中应包含防止SQL注入、XSS攻击的安全措施,如使用预编译语句、参数化查询,以及对用户输入进行过滤和转义。 11. **性能优化**:对于大型企业系统,性能优化至关重要。可能...

    计算机毕设之ssm毕业生书籍回购及租赁销售管理系统1c16w

    9. **性能优化**:对于大型系统,可能需要考虑缓存策略(如使用Redis)、负载均衡、数据库优化等技术,以提高系统性能和可扩展性。 10. **测试**:系统开发过程中,单元测试、集成测试和压力测试都是必不可少的,以...

    Laravel开发-laravel-bs3

    Bootstrap 3是一款流行的前端开发框架,它提供了丰富的预定义样式、组件和JavaScript插件,帮助开发者快速创建响应式、移动优先的网站。Laravel,另一方面,是PHP编程语言中的一个优雅的Web应用框架,它简化了后端...

Global site tag (gtag.js) - Google Analytics