使用txt文件而不是数据库获取当前计数器值更好吗?

时间:2019-06-10 14:23:50

标签: laravel

我正在laravel中的一个网站上工作,其中正在从数据库中加载当前计数器值。然后用户单击按钮以增加分数。

但是,由于该网站在任何给定时间都有大约4000个并发用户,因此数据库连接在服务器上造成了巨大损失,并导致超时。

如果我从txt文件中加载当前乐谱,然后将其写回到同一文件中,会更好吗?

还是应该使用Application变量存储分数?

我尝试使用缓存,但是它没有提取最新值。由于用户数量的原因,数据库优化也不起作用。

我正在寻找一种无需数据库使用即可显示和递增计数器的最佳方法。

1 个答案:

答案 0 :(得分:0)

数据库会做得更好。 NoSQL数据库非常适合您的用例。您可以使用Redis,它将数据存储在内存(RAM)中,这意味着读写操作将比在辅助磁盘(硬盘)中运行的其他数据库快得多。

Redis本身支持使用INCR命令的数据结构来增加值。 INCR将键处存储的数字加1。如果该键不存在,则在执行操作之前将其设置为0。

例如,拥有该值的密钥为my_counter。您可以像这样redis-cli一起玩耍。

redis>  SET my_counter "10"

"OK"

redis>  INCR my_counter

(integer) 11

redis>  GET my_counter

"11"

幸运的是,有一个Laravel的Redis客户端。您可以在这里阅读:

https://laravel.com/docs/5.8/redis

祝你好运:)

编辑1:

如果大量用户导致服务器速度下降,则可以在新数据库旁边设置其他服务器和体系结构选项。例如水平和垂直缩放。


参考文献:

https://github.com/phpredis/phpredis