1. 简介

  list 是按照插入顺序排序的字符串链表,可以在头部和尾部插入新的元素(双向链表实现,两端添加元素的时间复杂度为 O(1))。插入元素时,如果 key 不存在,redis 会为该 key 创建一个新的链表,如果链表中所有的元素都被移除,该 key 也会从 redis 中移除。

2. 数据模型

  链表用来存储多个有序的字符串,一个链表最多可以存储2^32 - 1个元素,在redis中可以对列表的两端插入push和弹出pop,还可以取指定范围的元素。常见操作时用 lpush 命令在 list 头部插入元素, 用 rpop 命令在 list 尾取出数据。

rpush key value [value...] //从右插入元素
lpush key value [value...] //从左边插入元素lrange key start end //获取指定范围的元素列表
lindex key index  //获取列表指定索引下标的元素llen key  //获取列表的长度lpop key // 从列表左侧弹出元素
rpop key // 从列表右侧弹出元素
lrem key count value //从列表中找到等于value的元素,并进行删除,根据count的不同有不同的情况
lset key index newValue //修改指定索引下标的元素
blpop key timeout  //阻塞式左弹出key
brpop key timeout  //阻塞式右弹出key

3. 应用场景

(1) 消息队列

redis 的 list 数据类型对于大部分使用者来说,是实现队列服务的最经济,最简单的方式。我司使用redis做消息队列,lpush 、rpop命令,实现先进先出,如果消费失败客户端把key再放回去,消费成功就remove掉。

(2) “最新内容”

因为 list 结构的数据查询两端附近的数据性能非常好,所以适合一些需要获取最新数据的场景,比如新闻类应用的 “最近新闻”。

4.优化建议

(1) list 是链表结构,所有如果在头部和尾部插入数据,性能会非常高,不受链表长度的影响;但如果在链表中插入数据,性能就会越来越差。

5.使用口诀:

lpush + lpop 栈lpush + rpop 队列lpush + ltrim = 有限集合lpush + brpop = 消息队列

list 数据类型的应用场景相关推荐

  1. Redis的数据类型以及每种数据类型的使用场景

    人就是很奇怪的动物,很简单的问题往往大家都容易忽略,当我们在使用分布式缓存Redis的时候,一个最简单的问题往往被人忽略,Redis的数据类型以及每种数据类型的使用场景是什么? 是不是觉得这个问题很基 ...

  2. Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透

    Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透 简单介绍一个redis? redis是内存中的数据结构存储系统,一个key-value类型的非关系型数据库,可持久化的数据库 ...

  3. Redis五种数据类型及应用场景

    Redis五种数据类型及应用场景 MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...

  4. Redis八种数据类型及应用场景介绍

    本文来说下Redis八种数据类型及应用场景介绍 文章目录 概述 String 介绍 应用场景 Hash 介绍 应用场景 List 介绍 应用场景 Set 介绍 应用场景 ZSet 介绍 应用场景 Bi ...

  5. Redis 数据类型及应用场景

    一. redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string. hash. set. sorted set.bitmap.hyperloglog 提供了 AOF 和 R ...

  6. Redis各个数据类型的使用场景

    Redis各个数据类型的使用场景 Redis支持五种数据类型: string(字符串) hash(哈希) list(列表) set(集合) zset(sorted set:有序集合). Redis列表 ...

  7. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景

    作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...

  8. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

    本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...

  9. Redis的五种数据类型及应用场景

    1,数据类型 String(字符串,整数,浮点数):做简单的键值对缓存 List(列表):储存一些列表类型的数据结构 Set(无序集合):交集,并集,差集的操作 Hash(包含键值对的无序散列表):结 ...

  10. 超强Redis数据类型与应用场景总结!!

    关于Redis 我们先来聊聊Redis的基础知识. 基于键值对的存储系统 :字典形式. 五种数据结构:字符串(String),Hash(字典),列表(List),集合(Set),有序集合(Sorted ...

最新文章

  1. 【转】oracle sequence
  2. 最搞笑的代码注释,你遇到过几个?
  3. 机器学习面试题(part3)
  4. 【专升本计算机】专升本计算机期末考试复习题(B卷附答案)
  5. 异步简析之BlockingCollection实现生产消费模式
  6. 关于科来网络分析系统的激活
  7. 利用反射将IDataReader读取到实体类中效率低下的解决办法
  8. html支持图片文字的控件_[小工具][爬虫]一键完整备份你的Csdn博客文章(支持Markdown,HTML,文中图片)...
  9. Linux脚本的创建
  10. 二维码是什么?java生成二维码
  11. 现代黑科技版“指鹿为马:使用CycleGAN实现男女“无痛变性”
  12. ESP8266开启热点和TCP Server
  13. Seata 新特性,APM 支持 SkyWalking,java区块链开发教程pdf
  14. c++11多线程编程(一):创建线程的三种方法
  15. SQLite 数据库操作
  16. 拜占庭容错算法的新发展——GBFT
  17. ThinkPhp5.0.24 JWT报错 ‘“kid“ empty, unable to lookup correct key‘解决办法
  18. 练习-在上次关闭位置启动窗口
  19. Arduino提高篇22—实时时钟DS1302
  20. 老乡鸡上市,“中式快餐”如何与“洋式快餐”掰手腕?

热门文章

  1. Memcached 运行状态
  2. Android开发 - 掌握ConstraintLayout(七)辅助线(Guideline)
  3. 机器学习 -- 信息论
  4. Oracle表字段的增删改和重命名
  5. html 使用button调用函数
  6. css那些事儿2 经典两列布局
  7. 2016个人阅读计划
  8. GDB调试程序系列 (3)
  9. CSS背景属性彻底研究
  10. java操作当前日期的年月日