• redis对象list


    Redis List是一组连接起来的字符串集合。

    在这里插入图片描述

    写操作:

    LPUSH

    语法:LPUSH key value [value …]
    功能:从头部增加元素,返回值为List中元素的总数。

    RPUSH

    语法:RPUSH key value [value …]
    功能:从尾部增加元素,返回值为List中元素的总数。

    LPOP

    语法:LPOP key
    功能:移出并获取列表的第一个元素。

    LREM

    语法:LREM key count value
    功能:移除值等于value的元素。当count=0,则移除所有等于Fvalue的元
    素。当count>0,则从左到右开始移除count个。当count<0则从右到左移除
    count个。返回值为被移除元素的数量。

    DEL

    语法:DEL key[key …]
    功能:删除对象,返回值为删除成功了几个键。

    UNLINK

    语法:UNLINK key [key …]
    功能:删除对象,返回值为删除成功了几个键。

    和DEL主要有如下不同:

    del命令同步删除命令,会阻塞客户端,直到删除完成。unlink 命令是异步
    删除命令,只是取消Key在键空间的关联,让其不再能查到,删除是异步进
    行,所以不会阻塞客户端。

    LLEN

    语法:LLEN key
    功能:查看List的长度,即List中元素的总数。

    LRANGE

    语法:LRANGE key start stop
    功能:查看start到stop为角标的元素。

    编码方式

    3.2版本之前,List对象有两种编码方式,一种ZIPLIST,另一种是
    LINKEDLIST。

    在这里插入图片描述

    ZIPLIST

    当满足如下条件时,用ZIPLIST编码:
    1.列表对象保存的所有字符串对象长度都小于64字节;
    2.列表对象元素个数少于512个,注意,这是LIST的限制,而不是ZIPLIST的
    限制;
    在这里插入图片描述
    可以看到,“hello”、“niuniu”、"mart"都挨在一起,正如其名字一样。ZIPLIST内存排列得很紧凑,可以有效节约内存空间。

    LINKEDLIST

    如果不满足ZIPLIST编码的条件,则使用LINKEDLIST编码。为了便于描述,
    我们还是假设列表中包含"hello"、“niuniu”、"mart"三个元素,如果用
    LINKEDLIST编码,则是几个String对象的链接结构,结构示意意图如下:
    在这里插入图片描述

    QUICKLIST横空出世

    LINKEDLIST原来是单个节点,只能存一个数据,现在单个节点存的是一个
    ZIPLIST,即多个数据。

    在这里插入图片描述

    在redis7.0之后,压缩列表listpack完全取代了ziplist.

  • 相关阅读:
    github 搜索项目小技巧
    某学院 期末test
    腾讯mini项目-【指标监控服务重构】2023-07-26
    推荐3款程序员常用的画图工具
    陌生人随意进出?学校宿舍这样管理更安全
    【C/调试实用技巧】—作为程序员应如何面对并尝试解决Bug?
    countdownlatch 和 completableFuture 和 CyclicBarrier
    IDC Incast 的不彻底解决
    【华为机试真题 JAVA】找终点-100
    .Net6 微服务之Ocelot+IdentityServer4入门看这篇就够了
  • 原文地址:https://blog.csdn.net/qq_43458555/article/details/137127837