python操作redis缓存-List类型,可以理解为列表,是可以有重复元素的列表

List操作,redis中的List在在内存中按照一个name对应一个List来存储。如图:

lpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最左边
如:
  lpush('adc8868', 11,22,33)
  保存顺序为:[ 33,22,11]

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.lpush('adc8868',11,22,33) #lpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最左边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# [b'33', b'22', b'11']

rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
如:
  rpush('adc8868', 11,22,33)
  保存顺序为:[ 11,22,33]

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# [b'11', b'22', b'33']

lpushx(name,value)在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
r.lpushx('adc8868',44) #lpushx(name,value)在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# [b'44', b'11', b'22', b'33']

rpushx(name, value)在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
r.rpushx('adc8868',44) #rpushx(name, value)在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
#[b'11', b'22', b'33', b'44']

llen(name)name对应的list元素的个数

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.llen('adc8868')) #llen(name)name对应的list元素的个数 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
#
# [b'11', b'22', b'33']

linsert(name, where, refvalue, value))在name对应的列表的某一个值前或后插入一个新值
参数:
  name,redis的name
  where,BEFORE或AFTER,BEFORE(前)或AFTER(后)
  refvalue,标杆值,即:在那个元素值前后插入数据
  value,要插入的数据

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
r.linsert('adc8868','BEFORE',22,44) #linsert(name, where, refvalue, value))在name对应的列表的某一个值前或后插入一个新值 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# [b'11', b'44', b'22', b'33']

lset(name, index, value)对name对应的list中的某一个索引位置重新赋值
参数:
  name,redis的name
  index,list的索引位置
  value,要设置的值

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
r.lset('adc8868',1,55) #lset(name, index, value)对name对应的list中的某一个索引位置重新赋值 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
#[b'11', b'55', b'33']

lrem(name, value, num)在name对应的list中删除指定的值
参数:
  name,redis的name
  value,要删除的值
  num, num=0,删除列表中所有的指定值;
         num=2,从前到后,删除2个;
         num=-2,从后向前,删除2个

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
r.lrem('adc8868',22,num=0) #lrem(name, value, num)在name对应的list中删除指定的值 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
#[b'11', b'33']

lpop(name)在name对应的列表的左侧获取第一个元素并在列表中移除,返回值则是第一个元素

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.lpop('adc8868')) #lpop(name)在name对应的列表的左侧获取第一个元素并在列表中移除,返回值则是第一个元素 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# b'11'
# [b'22', b'33']

rpop(name)在name对应的列表的右侧获取第一个元素并在列表中移除,返回值则是第一个元素

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.rpop('adc8868')) #rpop(name)在name对应的列表的右侧获取第一个元素并在列表中移除,返回值则是第一个元素 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# b'33'
# [b'11', b'22']

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

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.lindex('adc8868',2)) #lindex(name, index)在name对应的列表中根据索引获取列表元素 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# b'33'
# [b'11', b'22', b'33']

lrange(name, start, end)在name对应的列表分片获取数据
参数:
  name,redis的name
  start,索引的起始位置
  end,索引结束位置

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.lrange('adc8868',0,1)) #lrange(name, start, end)在name对应的列表分片获取数据 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# [b'11', b'22']
# [b'11', b'22', b'33']

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

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.ltrim('adc8868',0,1)) #ltrim(name, start, end)在name对应的列表中移除没有在start-end索引之间的值 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# True
# [b'11', b'22']

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

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8868',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边
print(r.rpoplpush('adc8868','adc')) #rpoplpush(src, dst)从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8868'):
liebiao.append(item)
print(liebiao) #返回
# b'33'
# [b'11', b'22']

自定义增量迭代

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池
r.rpush('adc8861',11,22,33) #rpush(name,values)在name对应的list中添加元素,每个新的元素都添加到列表的最右边 #由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要自定义迭代器:
liebiao = []
def list_iter(name):
"""
自定义redis列表增量迭代
:param name: redis中的name,即:迭代name对应的列表
:return: yield 返回 列表元素
"""
list_count = r.llen(name)
for index in range(list_count):
yield r.lindex(name, index)
# 使用
for item in list_iter('adc8861'):
liebiao.append(item)
print(liebiao) #返回
# [b'11', b'22', b'33']

第二百九十七节,python操作redis缓存-List类型,可以理解为列表的更多相关文章

  1. 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表

    python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...

  2. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

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

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

  4. 第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型

    第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型 Hash操作,redis中Hash在内存中的存储格式如下图: hset(name, key, value)name ...

  5. 第三百零一节,python操作redis缓存-管道、发布订阅

    python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...

  6. 第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置

    第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置 主题设置是在xadmin\plugins\themes.py这个文件 默认xadmin是通过下面这 ...

  7. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  8. python操作Redis缓存

    python操作Redis缓存 https://www.cnblogs.com/guotianbao/p/8683037.html 学习资料:电子书资源 联系邮箱:gmu1592618@gmail.c ...

  9. 第二百六十七节,Tornado框架-分页封装模块

    Tornado框架-分页封装模块 框架引擎 #!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web # ...

随机推荐

  1. jpa 批量插入

    @Override @Transactional public <S extends E> List<S> save(Iterable<S> entities) { ...

  2. 转 MySQL中的共享锁与排他锁

    原文链接在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念.使 ...

  3. 修改easyui的easyloader的默认css目录路径

    easyloader默认情况下会使用js文件所在目录下的themes文件夹中的css,这里改成项目自定义的css文件夹. 首先找到: var m=src.match(/easyloader\.js(\ ...

  4. Vim下的插件管理工具pathogen简介

    1.pathogen简介:    通常情况下安装vim插件是将所有的插件和相关的doc文件都安装在一个文件夹中,如$VIM/vim74/plugin目录下,文档在$VIM/vim74/doc目录下,但 ...

  5. 《解读window核心编程》 之 字符和字符串处理方式

    推荐的字符和字符串处理方式 開始将文本字符串想象为字符的数组,而不是 char 或字节的数组. 用通用数据类型(如 TCHAR/PTSTR )来表示文本字符和字符串. 用明白的数据类型(如 BYTE  ...

  6. Kibana查询说明

    elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 Kibana接口概述 Kibana接口分为四个主要部分: 发现 可视化 仪表板 设置 我们将按照列出的顺序浏览每个部分的 ...

  7. xslt转换xml

    实现json--> xml --(xlst)--> xml pom依赖 <dependency> <groupId>net.sf.json-lib</grou ...

  8. 在哪个web.xml中配置welcome页面

    是在tomcat的web.xml中配置,而不是在你的%web-project-root%/WEB-INF/web.xml中! 示例 <welcome-file-list> <welc ...

  9. ld,连接器

    连接器的功能,是将一个可执行程序所需的目标文件和库文件最终整合为一体.一个程序通常包含传统的三个段,.test, .data, .bss段.连接器的功能就是将各个目标文件个库文件中的三个段进行合并. ...

  10. 分享JQuery动画插件Velocity.js的六种列表加载特效

    分享JQuery动画插件Velocity.js的六种列表加载特效.在这款实例中给中六种不同的列表加载效果.分别为从上飞入.从右侧飞入.从左侧飞入.和渐显.一起看下效果图: 在线预览   源码下载 实现 ...