1.心路历程
上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票。最开始是没有用过redis的,公司因为考虑到参与人数的问题,给我们配了两台redis服务器,一台windows的(负责本地测试),一台linux的(负责线上版本),接下来说说途中遇到的坑,和最后的解决方法
2.坑之一,存List的瓶颈问题
linux版本redis服务器是16G的内存,因为第一次使用redis,并不知道去做压力测试,不知道瓶颈在哪,然后redis又被网上的人过度神话,以为只要内存不用完,就不会有瓶颈,取数据都是秒取,存数据都是秒存。上线两天,投票明细的key里的list集合超过10W(LIST里面存了投票时间,投票对象ID,主键ID,投票人ID),读取速度出现断崖式的跌落,从毫秒级变成3秒左右,数据量达到15W后,5秒左右。然后客服就来电话了,说用户说投票太慢了,点一下好久才提示成功,一直转。(他么的,我也是第一次,鬼知道redis会这样),我试着取了下另外一个key的数据(5W左右),发现还是毫秒级,证明key之间没有影响,所以当时的想到的解决方案就是,老子分key,差不多就是name_1,name_2,然后另外放个key存当前key的增量,到5W数据就分key,临时解决投票慢的问题。
总结一下,应该不是条数的问题,和List的长度有关,所以,不要把redis当关系型数据库使用,能分key就分key,然后做好瓶颈测试(现在必做的事之一)。
3.坑之二,redis的update功能
有没有大佬告诉我下,redis能不能Update..不是先取后改再删最后增加的那种。。可以直接用的那种。。。可能是我找的帮助类有问题,反正一直没找到可以直接update的方法。

