Chuenhung的个人网站

chuenhung.github.io

典型应用场景

  • 缓存系统
    可以用string实现
  • 计数器
    有incr命令,可在单线程下进行非常高效的计数,且不会出现计数错误的问题,比如微博转发、评论的计数。
    可以用string实现
  • 购物车
    可以用hash实现
  • 排行榜
    可以用有序集合实现
  • 消息队列
    可以用列表实现
  • 活动秒杀
阅读全文 »

受益与成本

受益

  • 加速读写
  • 降低后端负载

成本

  • 数据不一致:缓存层和数据层在时间窗口不一致
  • 代码维护成本
  • 运维成本:例如Redis cluster

缓存更新策略

各种更新策略对比

策略 一致性 维护成本
内存淘汰 (LRU/LFU/FIFO算法) 最差
超时剔除(expire) 较差
主动更新(开发控制缓存和数据一致性的业务)
阅读全文 »

希尔排序

希尔排序是简单插入排序的改进,它是一种不稳定排序算法。由D.L.Shell在1959年提出。希尔排序实质上是一种分组插入方法。

算法描述

1、对于n个待排序的数列,取一个小于n的整数gap(称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中。
2、然后对各组内的元素进行直接插入排序,这一趟排序完成之后,每一个组的元素都是有序的。
3、接下来减小gap的值,并重复执行上述的分组和排序。
4、重复这样的操作,当gap=1时,整个数列就是有序的。

阅读全文 »

快速排序

快速排序(Quick Sort)由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序也是分治法的经典实现,是不稳定的算法。

阅读全文 »
0%