使用 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

时间: 2024-10-03 01:54:00

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

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

set 集合类型 释义:            redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操作 其他有用的操作还包含集合的 并集(union),交集(intersection),差集(difference). 通过这些操作实现SNS中的 好友推荐功能 注意: 每个集合中的各个元素不能重复 应用场合: QQ好友的推荐 set 类型操作: sadd key member 添加一个 string

33. Python redis的 hash类型操作 其他常用操作

1.hash 类型操作 import redis pool = redis.ConnectionPool(host="192.168.48.131", port=6379, db=0) r = redis.Redis(connection_pool=pool) #hash类型操作:是一个name对应一个字典 #语法 hset(name, key, value) #name 对应的hash中设置一个键值对(不存在,则创建键值对:否则,修改键值对) # 语法参数解释: name: redi

redis之列表字典操作

Hash操作 hset(name,key,value) name对应的hash中设置一个键值对(不存在则创建,否则修改) 参数:name,redis中的name  key,name对应的hash中的key   value,name对应的hash中的value 注:hsetnx(name,key,value) ,当name对应的hash中不存在当前key时则创建 hmset(name,mapping) 在name对应的hash中批量设置键值对 参数:mapping,字典,如:{'k1':'v1',

Python的列表类型操作——“增删改查”,元组——“查”

一.什么是列表 1.列表是一个可变的数据类型,它由[]表示,其中的每一项元素使用","逗号隔开,可以储存各种数据类型.列表相比于字符串,可以存放大量数据类型,其是有序的,有索引,可以使用切片,方便取值. 2.列表的索引的下表也是从0开始的,切出来的内容为列表.[起始位置:结束位置:步长] 二.列表的"增删改查" 1.增加 list相比于str另一个更为方便的是,list可以发生改变,我们可以直接在原来的对象上进行操作 1)append() 在原字符串的末尾添加一个数

Redis散列表类型

散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他的数据类型. 一个散列类型键可以包含至多2^32 -1个字段. 命令 赋值 HSET key field value > HSET car price 500 (integer) 1 > HSET car name BMW (integer) 1 HSET 命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时HSET命令返回0. 取值 HGET key

Redis – sort set类型操作

sort set操作:sort set在set基础上增加了一列用于存储顺序序列设置操作:zadd key:        zadd key sortnum value        指定key增加元素,如果value存在,更新sortnumzrem:        zrem key value            删除指定key的valuezincrby:        zincrby key sortnum value        指定key-value的序列自增,不存在则添加zremra

python-10:列表类型操作:增删改查

原文地址:https://www.cnblogs.com/Zhouzg-2018/p/9689457.html

Redis学习之列表类型详解

本文和大家分享的主要是redis的列表类型相关内容,一起来看看吧,希望对大家学习redis有所帮助. 列表类型,可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段 列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度是 o(1),获取越接近两端的元素速度就越快 链表的代价是通过索引访问元素比较慢 向列表两端添加元素 向列表左边添加元素,返回增加后列表的长度 LPUSH key value1 value2 127.0.0.1:6379> LPUS

Redis的列表(List)类型

列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段. 列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢. 因为使用了双向链表实现存储的,所以在命令上也有两种:L和R."L"代表左,"R"代表右. 一.常用命令 1.向列表两端添加元素 LPUSH key value1 [v