Redis中List

1.介绍

  • 值在键在,值空键无
  • List实际是双向列表...

2.常用核心命令

lpush/rpush <k1><v1><v2>...<--->从左边/右边插入一个或多个值
lpop/rpop <key><--->从左边/右边吐出一个或多个值
rpoplpush <k1><k2><--->k1右边吐一个值,然后插入到k2左边
lrange <key><start><stop><--->按照索引下标获得元素(从左到右,-1为最右边)
lindex <key><index><--->按照索引下标获得元素(从左到右)
llen <key><--->获取列表长度
linsert<key>before<value><newvalue><--->在的前面插入值
lrem <key> <n><value><--->从左边删除n个value(从左到右)
lset <key><index><value><--->将列表key下标为index的值替换成value

3.底层数据结构

C 复制代码
//ziplist是Redis为了节约内存而开发的连续内存块结构,它将所有元素紧凑地存储在一块连续的内存中。
typedef struct quicklist {
    quicklistNode *head;      // 头节点
    quicklistNode *tail;      // 尾节点
    unsigned long count;      // 所有 ziplist 中的元素总数
    unsigned long len;        // quicklist 节点数量
    int fill : 16;            // 每个节点的填充因子(控制 ziplist 大小)
    unsigned int compress : 16; // 压缩深度(LZF 压缩)
} quicklist;
//quicklist是Redis3.2引入的双向链表结构,每个节点是一个ziplist。
typedef struct quicklistNode {
    struct quicklistNode *prev;   // 前驱节点
    struct quicklistNode *next;   // 后继节点
    unsigned char *zl;            // 指向 ziplist 的指针
    unsigned int sz;              // ziplist 占用的字节数
    unsigned int count : 16;      // ziplist 中的元素数量
    unsigned int encoding : 2;    // 编码方式(1=RAW, 2=LZF压缩)
    unsigned int container : 2;   // 容器类型(1=ziplist)
    unsigned int recompress : 1;  // 是否需要重新压缩
    unsigned int attempted_compress : 1; // 压缩尝试标志
    unsigned int extra : 10;      // 保留字段
} quicklistNode;
相关推荐
x***r1518 小时前
Redis Desktop Manager 0.8.8 安装教程(Windows redis-desktop-manager-0.8.8.384详细步骤)
数据库·windows·redis
无涯大者9 小时前
Redis 实现页面缓存、购物车、登录 token示例、点赞 / 阅读计数,排行榜 示例
redis·缓存
真实的菜10 小时前
Redis 从入门到精通(十三):性能优化与运维实战 —— 慢查询、内存优化、监控与安全
运维·redis·性能优化
Java 码思客13 小时前
【Redis分布式缓存实战】第20章 Redis监控运维与自动化体系
运维·redis·缓存
勇往直前plus13 小时前
Redis&Python 梳理
数据库·redis·python
我是一颗柠檬13 小时前
【Java项目技术亮点】分布式锁实现与优化:从Redisson到ZooKeeper,彻底搞懂分布式锁的底层原理
java·redis·分布式·中间件·java-zookeeper
宁小法15 小时前
Redis evalsha 可能返回的错误类型
redis·php·lua报错
我是一颗柠檬16 小时前
【Redis】Redis面试高频考点汇总Day15(2026年)
数据库·redis·缓存·面试
姚愚谦16 小时前
Redis源码阅读1-SDS
redis
小森林之主16 小时前
凌晨3点的闹钟:分布式定时任务设计实战
java·redis·任务调度·cron·分布式定时任务