一、setTimeout 在使用setTimout的时候需要注意下设置的时间,如果超过15分钟以上(这个值可能不准确),setTimeout会变成立即执行,所以长时间的定时器任务尽量使用setInterval来替代
二、多进程 多进程需要注意很多变量共享的问题 所有的全局变量都需要考虑变量共享问题 比如定义一个全局变量 timeout = setTimeout… 然后在另外一个地方调用了clearTimeout(timeout) 如果这两个执行都是异步的,那么有可能第一个调用在A进程中执行 而第二个变量可能在B进程中执行 那么B进程中并不会然后setTimeout中得函数终止
三、redis的一些小经验 1、setex 在setex之后如果在某个地方需要改变这个对应key的值或者改变key的名称 改变名称就用rename比较简单,rename不会清除过期时间 如果需要改变key值,一定需要先ttl读出具体的数值,然后重新调用setex重新设置 而不能通过set来直接改变,set之后过期时间会清除
2、zscan 有时候我们可能想到用zscan来做搜索 比如在一个zset里面查找某一个特定匹配的key 可能会这么写 zscan rank1 0 match abc* 然后就直接看返回值中是否存在对应的值 如果是想查找唯一,我感觉比较好的方式是加入count参数 zscan rank1 0 match abc* count 100000 原因: 如果不加count比较大得值,他会每次返回一个cursor的位置,然后你要不断的去检索,可能需要重复调用zscan很多次才能找到自己需要的值,或者导致错误
对于zscan的高级用法,如果有比较精通的人告知 我感觉用count得方式比较好,或许有更好的方式
记录一下- -都是我没接触的东西- -。。。。。
我记得不是15分钟,而是这个数字2147483647,也就是int最大值,超过会变为负数,所以会立刻执行
多进程 变量不共享的把
你说的对,测试了下,谢谢
我是说需要去考虑做变量共享才行