Redis 学与思系列(3)

前言

上篇文章中简单的介绍和总结了一下字符串类型的key的相关操做命令以及其适用场景,今天接着上篇文章的内容讲解redis其余的数据类型的相关指令以及其对应的使用场景。redis

列表类型:

列表用来存储有序的元素,(这里的有序指加入列表的顺序),redis 支持对列表2端进行插入和弹出,还能够获取指定范围,指定下标的元素。
复制代码

这里简单的介绍列表的几种操做指令:异步

命令:RPUSH key value [value ...]

将一个或多个值 value 插入到列表 key 的表尾(最右边)。
 若是有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾.
 若是 key 不存在,一个空列表会被建立并执行 RPUSH 操做。
复制代码

应用场景:

异步队列:该指令能够和`LPOP` 指令结合起来构成异步队列. 固然与之对应的还有指令`LPUSH` 和`RPOP`。固然结合`BLPOP`等相关指令能够实现
带阻塞功能的异步队列.
复制代码

命令: LRANGE key start stop

返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
  下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
  你也可使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
复制代码

应用场景:

分页: 借助于lrange的功能,咱们能够实现分页功能。
复制代码

集合类型

集合类型一个重要的特色是集合中不容许有重复元素,固然集合中的元素是无序的(这里的顺序指的也是加入集合时元素的顺序)。
 集合提供了不少有用的指令,好比判断某个元素是否存在的`SISMEMBER` ,返回指的集合的基数(元素个数)`SCARD` ,以及多个集合取差集,并集等等相关指令。
复制代码

应用场景:

统计和查找: 借助集合的去重特性以及SCARD,SISMEMBER 指令,能够考虑用集合来进行统计和查找功能。
 随机数:借助`SRANDMEMBER`和`spop` 指令返回集合中的随机数,好比年会抽奖的时候就能够用这个生成简单的随机数
复制代码

有序集合数据类型

有序集合相比普通集合而言,这个有序体如今每一个元素的score 上,这个有序和列表的有序是不同的,列表强调的是元素添加时的顺序,有序集合是按照元素的score值进行排序的。有不少颇有用的指令:如`ZRANGEBYSCORE`返回特定范围内的元素。
复制代码

适用场景:spa

统计topN 的场景:
   简单限流:经过zremrangebyscore 移除特定的元素,以及ZCARD 统计元素的数量,构造一个简单的滑动窗口(好比10秒内),实现限流
复制代码

后记

本文只是简单的阐述了一下redis的部分 数据类型以及一些可用的场景,固然我的理解可能不必定彻底正确。后面的文章中会结合其余的问题继续分享redis的其余特性。code

相关文章
相关标签/搜索