使用redis做一个简单的投票程序
最近有同事需求,作的专题需要一个投票功能,商讨后看了下社区的投票代码,感慨良多,决定用redis做一个单纯的投票数据处理,以方便后续对社区投票的修改
所以功能就很简单,不考虑选项,内容等存储,所要做的只有存储和读取功能。直接使用了redis的几个特性。
经过考虑实际的使用情况应该不会太多,直接在redis里做一个hash类型的字段,以voteid->votenums 的方式存储
同时有需求,对于每个投票,限制同一ip的投票间隔时间。所以对此做了一个单一ip和voteid对应的key 设置了存活时间为投票间隔的秒数
使用时直接先get一下key是否存在,不存在的时候进行票数投递操作,并且写入存活时间的记录
这样读取票数的时候 就可以 hget 或者 hmget 进行票数的获取
为了效率,redis没有做任何的持久化,所以数据还是要同步到mysql中
单独做了一个集合存储在redis里, 每次有投票成功,都会向集合里sadd一下,到一定时间,目前设计每天一次,
后台会读取这个集合,根据scard获取集合数量,然后逐个spop读取出数据后,去hash里获取记录, update到数据库
简单的投票数据处理就结束了。下一步就要对原有的投票功能进行修改,把数据接入
浙公网安备 33010602011771号