数据结构
list也是Redis中比较常见的数据类型,是继String类型的第二大数据类型,特点是有序,可以重复,跟java中的ArrayList 比较类似
场景一:日志记录
队列的特点是先进先出,后进后出.我们可以使用 lpush 命令从队列的左边放入,然后利用rpop命令从右边取出,这样就模拟实现了队列.可以用来记录日志等.之前我们公司的由于机器比较少,没有空间安装MQ,就是使用list结构来记录日志的,可以做一个定时任务,单线程从队列中将数据取出,既能顺序消费又缓解了数据库的写入压力
场景二:抽奖,抢票
list 是线程安全的,所有的pop操作是原子性的,适用于抽奖,抢票等场景,用来防止超卖问题.这里重点解释一下抽奖:主要是分为三步
1.全部奖品打散放入list中
2.调用pop命令从list中取出
3.将中奖记录写入到数据库
场景三:流量消峰
将所有的请求全部放到list中,然后开启多个线程来处理后续请求,减轻服务器压力,用来处理一些高并发场景.
常用命令
lpush 从左边放入 rpush 从右边放入
lpop 从左边取出 rpop 从右边取出
range 按照顺序取出,可以指定数据所在的下标