幂次定律

如果某件事的发生频率和它的某个属性成幂关系,那么这个频率就可以称之为符合幂次定律。幂次定律的表现是少数几个事件的发生频率占了整个发生频率的大部分, 而其余的大多数事件只占整个发生频率的一个小部分。幂次定律

Redis中的应用

在Redis中的跳表内容中有一个zslRandomLevel函数,返回一个随机的层级

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21

/* Returns a random level for the new skiplist node we are going to create.

 * The return value of this function is between 1 and ZSKIPLIST_MAXLEVEL

 * (both inclusive), with a powerlaw-alike distribution where higher

 * levels are less likely to be returned. */

int zslRandomLevel(void) {

    int level = 1;

    while ((random()&0xFFFF) < (ZSKIPLIST_P * 0xFFFF))

        level += 1;

    return (level<ZSKIPLIST_MAXLEVEL) ? level : ZSKIPLIST_MAXLEVEL;

}

为什么要使用幂次定律