场景一:取最新N条数据
网站最新文章、最新评论等。使用 Redis 列表(List)集合,LPUSH 命令向 list 集合头部插入数据,LTRIM 命令对 list 集合进行修剪(trim)
1 | # 将一个或多个值插入到列表头部 |
场景二:排行榜应用,取 TOP N操作
场景二和场景一不同之处在于,场景一操作以时间为权重,场景二是以某一个条件为权重。比如:赞次数、评论次数等。这个时候就需要使用 Redis 有序集合(sorted set)。将需要排序的值设置为有序集合的 score,将具体的数据设置为相应的 value,每次只需要执行 ZDAA 命令即可。
1 | # 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
场景三:计数器
Redis 命令是原子性的,可以利用 INCR、DECR 命令来构建计数器系统,其底层写入是单线程模型,并发写入会按先后顺序执行。
1 | # 将 key 中储存的数字值增一 |
场景四:缓存
Redis 作为分布式缓存中间件,其性能优于 Memcached,且数据结构更加多样化。
场景五:队列
使用 Redis 列表(List) 可以构建队列系统,使用 Redis 有序集合(sorted set)甚至可以构建有优先级的队列系统。
场景六:Pub、Sub实时消息系统
使用 Redis 的 Pub/Sub 可以构建实时的消息系统。
场景七:Unique 操作
获取所有数据去重。使用 Redis 集合(Set)数据结构最合适不过了,只需要不断将数据往 set 中丢就行了,set 会自动去重。
场景八:精确设置过期时间
比如场景二中,score 可以设置成过期时间的时间戳,这样就可以简单的通过过期时间排序,定时清除过期数据。