看到的一段话

在我还是少年的时候,曾有过很多偶像,我总会拿自己的年龄与他们比较,当他们的年龄减去我当时的年龄,差是一个很大数字的时候,我会心安理得地认为,毕竟他们比我年纪大出许多,所以他们的功名成就与我的默默无闻均在情理之中;当年龄差这个数字愈来愈小,即将趋近于零甚至成为负数的时候,我便开始坐卧不安,心中涌动着悲哀。

继续阅读 »

一个php操作状态位状态的类

平时经常有通过二进制位来存储多个开关位,实现一个字段存多个开关的功能。每次操作位,难免容易出错,遂写了一个类简化操作,闲话少说上代码和使用方法。BitState类:<?php class BitState { private $maps = []; private $state = 0; public function __construct($state = ...

继续阅读 »

分布式锁的实现

1.Memcached分布式锁利用Memcached的add命令。此命令是原子性操作,只有在key不存在的情况下,才能add成功,也就意味着线程得到了锁。2.Redis分布式锁和Memcached的方式类似,利用Redis的setnx命令。此命令同样是原子性操作,只有在key不存在的情况下,才能set成功。(setnx命令并不完善,后续会介绍替代方案)3.Zookeeper分布式锁利用Zoo...

继续阅读 »

用redis实现分布式锁

Redis分布式锁的基本流程并不难理解,但要想写得尽善尽美,也并不是那么容易。在这里,我们需要先了解分布式锁实现的三个核心要素:1.加锁最简单的方法是使用setnx命令。key是锁的唯一标识,按业务来决定命名。比如想要给一种商品的秒杀活动加锁,可以给key命名为 “lock_sale_商品ID” 。而value设置成什么呢?锁的value值为一个随机生成的UUID。我们可以姑且设置成1。加锁...

继续阅读 »

memcache 命中率

连接上memcache,然后直接输入stats就可以得到当前memcache的状态。cmd_get :get命令(获取)总请求次数get_hits :总命中次数缓存命中率 = get_hits/cmd_get * 100%

继续阅读 »