list 数据类型 列表类型

list 类型是一个双向操作 从链表的头部或者尾部添加删除元素

list 既可以用作栈 也可以用作队列

list 链表的类型应用场合:

获取最新的 10 个用户的信息

select * from user order by logintime desc limit 10;

数据不复杂 但是 对数据库的负载比较大

如给关键字 logintime 设置索引 耗费资源

用 redis 通过 list 链表实现以上功能

在 list 链表中只保留最新的10个数据

每一次进来一个新数据就删除一条旧数据

从而实现节约数据资源 减少服务器负载压力

// list 类型 操作

lpush key string 在 key 对应 list 头部添加字符串元素

rpush key string 在 key 对应 list 尾部添加字符串元素

rpop key 从 list 尾部删除元素 并返回删除的元素

lpop key 从 list 头部删除元素 并返回删除的元素

llen key 返回 key 对应 list 的长度 key 不存在 返回 0 如果key对应的类型不是 list 返回错误

lrange key start end 返回指定区间内的元素 从下标 0 开始

ltrin key start end 截取list 保留指定区间的元素

// 注意

// lpush 和 rpop 结合使用

// rpush 和 lpop 结合使用

eg : 只保存5条数据

原理  (队列) list 链表 namelogin 保存最新3条数据的

头部 >>> 添加新用户 >>> laowen9

laowen8

laowen7

laowen6

尾部 >>> 踢出旧用户 >>> laowen5

// 操作开始 如下

// 头部每更新一条 就删除尾部一条 最终只保留5条数据

lpush namelogin laowen1    // OK 表示添加OK
    
    lpush namelogin laowen2 // OK 表示添加OK
    
    lpush namelogin laowen3 // OK 表示添加ok
    
    lpush namelogin laowen4 // OK 表示添加OK
    
    lpush namelogin laowen5 // OK 表示添加OK

lpush namelogin laowen6 // OK 表示添加OK

rpop namelogin  // 返回 "laowen1" 删除list表最后一条数据

lrange namelogin 0 4

// 返回值为

// 1) "laowen6"
    
    // 2) "laowen5"
    
    // 3) "laowen4"
    
    // 4) "laowen3"
    
    // 5) "laowen2"

llen namelogin  // 返回 (integer) 5 // 返回的是数据的长度

// 截取lsit 保留指定范围内的元素

ltrim namelogin 2 4 // 返回 OK

lrange namelogin 0 2

// 返回值为

// 1) "laowen5"
    
    // 2) "laowen4"
    
    // 3) "laowen3"

总结 队列 栈 区别

队列  >>>  头部 添加数据 尾部 删除数据

头部 添加新用户 >>> laowen9

laowen8

laowen7

laowen6

尾部 踢出旧用户 >>> laowen5

栈  >>>  头部 添加数据 头部 删除数据

头部 添加新用户 >>> laowen9

头部 踢出旧用户 >>> laowen5

laowen8

laowen7

laowen6

redis 的使用 ( list列表类型操作)的更多相关文章

  1. 玩一把redis源码(一):为redis添加自己的列表类型

    2019年第一篇文档,为2019年做个良好的开端,本文档通过step by step的方式向读者展示如何为redis添加一个数据类型,阅读本文档后读者对redis源码的执行逻辑会有比较清晰的认识,并且 ...

  2. redis源码(一):为redis添加自己的列表类型

    本文档分为三大部分: 环境介绍与效果演示 redis接收命令到返回数据的执行逻辑 代码实现 文档的重点和难点在第三部分,完全阅读本文档需要读者具备基本的c语言和数据结构知识. 环境介绍和效果演示环境介 ...

  3. redis 的使用 ( set集合类型操作)

    set 集合类型 释义:            redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操 ...

  4. Redis常用命令入门——列表类型(一级二级缓存技术)

    获取列表片段 redis > LRANGE KEY_NAME START END lrange命令比较常用,返回从start到stop的所有元素的列表,start和stop都是从0开始. (1) ...

  5. thinkphp5操作redis系列教程】列表类型之lRange,lGetRange

    <?php namespace app\admin\controller; use think\cache\driver\Redis; use think\Controller; use \th ...

  6. redis对sorted_set进行的相关操作

    redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令 redis对sorted_set(有序集合)类型操作的命令: 命令 语法 概述 返回值 Redis Z ...

  7. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

  8. redis:list列表类型的操作

    1. list列表类型的操作 1.1. lpush/rpush key value [value ...] 链表的头部(左侧)或尾部(右侧)插入值 语法:lpush key value [value ...

  9. Redis常用命令入门3:列表类型

    列表类型 列表类型也是一个我们很长要用到的一个类型.比如我们发博客,要用到博客列表.如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键, ...

随机推荐

  1. [Android Pro] Android studio jni中调用Log输出调试信息

    reference to : http://www.linuxidc.com/Linux/2014-02/96341.htm Android 开发中,java 可以方便的使用调试信息Log.i, Lo ...

  2. August 14th, Week 34th Sunday, 2016

    To live is to function, that is all there is in living. 活着就要发挥作用,这就是生活的全部内容. I often joke that my dr ...

  3. css3属性flex弹性布局设置三列(四列)分布样式

    参考:阮一峰的网络日志 <!doctype html> <html lang="en"> <head> <meta charset=&qu ...

  4. 《CLR via C#》读书笔记(6)类型和成员基础

    6.1 类型的各种成员 在一个类型中,可以定义0个或者多个以下种类的成员: 常量 常量是在编译时设置其值并且永远不能更改其值的字段.使用常量可以为特殊值提供有意义的名称以代替数字文本,以使代码变得更容 ...

  5. GBDT原理实例演示 1

    考虑一个简单的例子来演示GBDT算法原理 下面是一个二分类问题,1表示可以考虑的相亲对象,0表示不考虑的相亲对象 特征维度有3个维度,分别对象 身高,金钱,颜值     cat dating.txt ...

  6. Ubuntu下调整swap分区的大小

    转自:http://blog.chinaunix.net/uid-7573623-id-2048964.html 由于安装oracle 的时候,swap太小不能继续安装,于是想有什么方法在不不用安装o ...

  7. blender源代码编译

    blender源码路径(svn):https://svn.blender.org/svnroot/bf-blender/trunk/blender/ 依赖外部Lib(svn):https://svn. ...

  8. eclipse基础及开发插件

    Eclipse:http://www.eclipse.org/downloads/ Compare Package:http://www.eclipse.org/downloads/packages/ ...

  9. POJ3691 DNA repair(AC自动机 DP)

    给定N个长度不超过20的模式串,再给定一个长度为M的目标串S,求在目标串S上最少改变多少字符,可以使得它不包含任何的模式串 建立Trie图,求得每个节点是否是不可被包含的串,然后进行DP dp[i][ ...

  10. DevExpress DXperience 的本地化(汉化)方法

    Devexpress的.net组件目前非常流行,在国内开发者中有非常高的热度,但是由于是国外控件,我们经常遇到的一个问题是汉化.目前Devexpress公司2011.2版以后使用了统一的本地化模式,针 ...