redis 的使用 ( list列表类型操作)
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列表类型操作)的更多相关文章
- 玩一把redis源码(一):为redis添加自己的列表类型
2019年第一篇文档,为2019年做个良好的开端,本文档通过step by step的方式向读者展示如何为redis添加一个数据类型,阅读本文档后读者对redis源码的执行逻辑会有比较清晰的认识,并且 ...
- redis源码(一):为redis添加自己的列表类型
本文档分为三大部分: 环境介绍与效果演示 redis接收命令到返回数据的执行逻辑 代码实现 文档的重点和难点在第三部分,完全阅读本文档需要读者具备基本的c语言和数据结构知识. 环境介绍和效果演示环境介 ...
- redis 的使用 ( set集合类型操作)
set 集合类型 释义: redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操 ...
- Redis常用命令入门——列表类型(一级二级缓存技术)
获取列表片段 redis > LRANGE KEY_NAME START END lrange命令比较常用,返回从start到stop的所有元素的列表,start和stop都是从0开始. (1) ...
- thinkphp5操作redis系列教程】列表类型之lRange,lGetRange
<?php namespace app\admin\controller; use think\cache\driver\Redis; use think\Controller; use \th ...
- redis对sorted_set进行的相关操作
redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令 redis对sorted_set(有序集合)类型操作的命令: 命令 语法 概述 返回值 Redis Z ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
- redis:list列表类型的操作
1. list列表类型的操作 1.1. lpush/rpush key value [value ...] 链表的头部(左侧)或尾部(右侧)插入值 语法:lpush key value [value ...
- Redis常用命令入门3:列表类型
列表类型 列表类型也是一个我们很长要用到的一个类型.比如我们发博客,要用到博客列表.如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键, ...
随机推荐
- 【leetcode】 Unique Path ||(easy)
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- 【processing】小代码2
函数: 绘制直线自由图形: beginShape(), vertex(), endShape() 分别是绘制图形开始,连接图形的节点,绘制结束 endShape(CLOSE)表示闭合图形. 绘制曲线边 ...
- 【OpenCV】直方图
今天写直方图,学了几个相关函数 1. mixChannels void mixChannels(const Mat* src, int nsrc, Mat* dst, int ndst, const ...
- HDU 5833 Zhu and 772002 (数论+高斯消元)
题目链接 题意:给定n个数,这n个数的素因子值不超过2000,从中取任意个数使其乘积为完全平方数,问有多少种取法. 题解:开始用素筛枚举写了半天TLE了,后来队友说高斯消元才想起来,果断用模板.赛后又 ...
- php与xpath使用操作文本节点
<?php $html="<p> 对于2014年,省统计局的统计分析显示,我省消费流通领域受诸多因素的影响,有机遇也有挑战.但值得注意的是,消费增长还存在不少制约因素,比如 ...
- android 开发赚钱
原 android 开发赚钱 谁带我去看看世界 发布时间: 2015/06/09 12:05 阅读: 1589 收藏: 37 点赞: 2 评论: 5 开发android也有一年左右了,利用业余时间陆续 ...
- C++联合
原文地址:http://ideage.javaeye.com/blog/210614 联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是 ...
- 2.1顺序容器-vector
vector 1) * :使用vector必须包含vector头文件.可变长的动态数组,支持随机访问,所有STL算法都可以对vector进行操作. ** :随机根据下标访问某个元素的时间是一个常数 ...
- linux后台运行和关闭、查看后台任务
转自:http://www.cnblogs.com/kaituorensheng/p/3980334.html fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.&a ...
- Nginx详解(一)
1.Nginx是什么? Nginx就是反向代理服务器. 首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如Go ...