1、lpush

  1. lpush(name,values)
  2. # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边
  3. # 如:
  4. # conn.lpush('oo', 11,22,33)
  5. # 保存顺序为: 33,22,11
  6. # 扩展:
  7. # rpush(name, values) 表示从右向左操作

2、lpushx

  1. lpushx(name,value)
  2. # 在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
  3. # 更多:
  4. # rpushx(name, value) 表示从右向左操作

3、linsert

  1. linsert(name, where, refvalue, value))
  2. # 在name对应的列表的某一个值前或后插入一个新值
  3. # 参数:
  4. # name,redis的name
  5. # where,BEFORE或AFTER
  6. # refvalue,标杆值,即:在它前后插入数据
  7. # value,要插入的数据

4、lpop

  1. lpop(name)
  2. # 在name对应的列表的左侧获取第一个元素并在列表中移除,返回值则是第一个元素
  3. # 更多:
  4. # rpop(name) 表示从右向左操作

5、lrem

  1. conn.lrem(name, value, num)
  2. # 在name对应的list中删除指定的值
  3. # 参数:
  4. # name,redis的name
  5. # value,要删除的值
  6. # num, num=0,删除列表中所有的指定值;
  7. # num=2,从前到后,删除2个;
  8. # num=-2,从后向前,删除2个

6、lset

  1. conn.lset(name, index, value)
  2. # 对name对应的list中的某一个索引位置重新赋值
  3. # 参数:
  4. # name,redis的name
  5. # index,list的索引位置
  6. # value,要设置的值

7.blpop

  1. blpop(keys, timeout)
  2. # 将多个列表排列,按照从左到右去pop对应列表的元素
  3. # 参数:
  4. # keys,redis的name的集合
  5. # timeout,超时时间,当元素所有列表的元素获取完之后,阻塞等待列表内有数据的时间(秒), 0 表示永远阻塞
  6. # 更多:
  7. # r.brpop(keys, timeout),从右向左获取数据

8、lrange

  1. lrange(name, start, end)
  2. # 在name对应的列表分片获取数据
  3. # 参数:
  4. # name,redis的name
  5. # start,索引的起始位置
  6. # end,索引结束位置

9、lrange容易出现爆栈现象,处理方案:模仿hscan_iter

  1. def list_iter(key,count=100):
  2. index = 0
  3. while True:
  4. data_list = conn.lrange(key, index, index+count-1)
  5. if not data_list:
  6. return
  7. index += count
  8.  
  9. for item in data_list:
  10. yield item
  11.  
  12. for item in list_iter('k1',count=3):
  13. print(item)

10、llen

  1. llen(name)
  2. # name对应的list元素的个数

11、lindex

  1. lindex(name, index)
  2. # 在name对应的列表中根据索引获取列表元素

12、rpoplpush

  1. rpoplpush(src, dst)
  2. # 从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边
  3. # 参数:
  4. # src,要取数据的列表的name
  5. # dst,要添加数据的列表的name

13、brpoplpush

  1. brpoplpush(src, dst, timeout)
  2. # 从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧
  3. # 参数:
  4. # src,取出并要移除元素的列表对应的name
  5. # dst,要插入元素的列表对应的name
  6. # timeout,当src对应的列表中没有数据时,阻塞等待其有数据的超时时间(秒),0 表示永远阻塞

14、ltrim

  1. ltrim(name, start, end)
  2. # 在name对应的列表中移除没有在start-end索引之间的值
  3. # 参数:
  4. # name,redis的name
  5. # start,索引的起始位置
  6. # end,索引结束位置

redis 数据类型之列表的更多相关文章

  1. Redis数据类型之列表(list)

    1. 什么是列表 redis的列表使用双向链表实现,往列表中放元素的时候复杂度是O(1),但是随机访问的时候速度就不行了,因为需要先遍历到指定的位置才可以取到元素. 既然列表是使用链表实现的,那么就说 ...

  2. Redis数据类型之列表List

    Redis列表简介 Redis列表是简单的字符串列表,一个列表最多可以包含 232 - 1 个元素.列表按照插入顺序排序,可以从列表的头部或者尾部添加元素 上图演示了使用LPUSH向列表中插入元素,并 ...

  3. 【Redis学习之五】Redis数据类型:列表和散列

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.列表 基于Linked Lis ...

  4. Redis数据类型之列表操作

    redis 目录: 1.自动分配(redis) - 批量导入 2.微信自动绑定 3.django的ORM做不了的操作,怎么自定义操作数据库 extra ’ 4.报表 公司每个月销售的业绩 5.权限 = ...

  5. Redis数据类型之散列表

    Redis五大数据类型以及操作 目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字 ...

  6. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  7. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  8. Redis数据类型介绍

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  9. redis数据类型

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

随机推荐

  1. Codeforces Round #561 (Div. 2)

    C. A Tale of Two Lands 题意: 给出 n 个数,问有多少点对(x,y)满足 |x-y| ≤ |x|,|y| ≤ |x+y|: (x,y) 和 (y,x) 表示一种答案: 题解: ...

  2. redux.js的基本使用

    1.先是安装reduxJx, cnpm i --save rudux 2.创建一个store的js文件 3.使用import来引用 redux import { createStore } from ...

  3. 快排java代码

    定一个基准位,递归左右两边排序. public void fun(){ int arr[] = {2,3,4,5,6,7,822,3,4,5,8,6,5,4,2,1}; //System.out.pr ...

  4. Java 学习笔记(11)——lambda 表达式

    在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...

  5. HDU1172猜数字 [模拟]

    1.题意 任务是猜一个四位数,每次尝试后会给出这次猜中了几个数字和猜中了几个位置,求能否根据尝试的记录给出答案 2.分析 数据给出查询次数和每次查询的数及其有几个数和几个位置符合,值得注意的是,猜对的 ...

  6. 使用 HttpClient 进行表单提交时,遇到的问题

    问题 在开发微信支付的小微商户进件接口时,需要通过表单来上传身份证图片等数据.在微信支付接口文档也说明了,需要使用 multipart/form-data 的方式发送请求..NET 提供了 Multi ...

  7. 分布式大牛详解Zookeeper底层原理

    很多学员都在反馈,说zk很难学,学的不是很明白,在这里,我继续带着大家详解一遍Zookeeper 首先zk是什么呢首先肯定是一个个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用 ...

  8. 支撑百万级并发,Netty如何实现高性能内存管理

    Netty作为一款高性能网络应用程序框架,实现了一套高性能内存管理机制 通过学习其中的实现原理.算法.并发设计,有利于我们写出更优雅.更高性能的代码:当使用Netty时碰到内存方面的问题时,也可以更高 ...

  9. 对QT中QBitArray类进行简单剖析

    我们知道Qt中的QBitArray类支持在位(bit)的层次上进行数据操作.本文剖析该类在二进制文件读写时的一些要点.另外,在Qt中,QDataStream类对于二进制文件的读写提供了诸多便利,需要注 ...

  10. Harbor本地镜像库安装与使用

    Harbor安装很简单,不过安装以后要怎么操作,百度了好久都没有找到实操的方法,怎么从官方拉取镜像后更新到私有仓库中?这个弄了好久,一样样测试后才找到方法,对于不熟悉私有仓库的小白来说,有点坑.还好花 ...