浅谈thinkPHP中利用缓存处理高并发的思路

此内容如有问题,请多多指教

 

 

 

Thinkphp默认各类缓存都是以文件缓存的

改的话在配置文件里改

'DATA_CACHE_TYPE'       =>  'File',  // 数据缓存类型,支持:File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator

 

S数据缓存与F快速缓存最大的区别是:

 

S能设置缓存有效时间,来删除自动缓存数据

而F不能设置只能强制删除
F('data',NULL);S同理一样强制删S('data',NULL)除
查询缓存cache默认是true即开启了缓存的
   注意:当向数据库发送不同数据库时,会产生不同的查询缓存文件,
 

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->select();若像数据库发送相同同数据库时只产生一条查询缓存文件,

          M('admin')->cache()->where()->select();

      M('admin')->cache()->where()->find();
 

 

处理高并发解决方案:

当我们网站访问量大了的时候,解决卡顿问题,

 

方法1:可以从数据库着手,运用主从式分布式数据库分配用户请求数据库地址,(上了百万级同理),

假如在线用户有10w人平均每一个人1秒钟向数据库发送3条数据库那么就有30万数据发送数据库,

SQL的量可能会非常巨大,所以有必要设置下缓存的队列长度,例如,我们希望SQL解析缓存不超过5000条记录,可以设置:

1. 'DB_SQL_BUILD_LENGTH' => 5000, // SQL缓存的队列长度
2. 然后分配到各个数据中从而减轻了服务器的压力

方法二 从服务器端运用nginx配置服务器,(负载均衡)具体有待完善

 

 

方法3假如有100000用户同时在我们p2p平台借款(其中可能会出现一小部分用户卡顿借款失败),为了解决其中出现的的问题,

我们可以设置两个线程:

1.    主线程正常执行所有用户的请求

2.    把所有用户全部放到事务队列处理,副线程只用来—>读事务队列的结果集

提高用户体验

阿里云学生机1年114元限时活动(24岁以下都可以购买)https://promotion.aliyun.com/ntms/act/campus2018.html?userCode=a6violqw阿里云1888元红包:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=a6violqw

优库云是一个致力于分享学习干货、实用工具、优秀博客、面试宝典、互联网资讯技术、新闻观察、热点资讯、京东淘宝好物、优惠活动的平台。不定时推送,关注置顶公众号不错过任何福利!点击链接加入组织https://mp.weixin.qq.com/s/XHMsZaQYK-PkmudA_JXLSA

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钟长森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值