第二百九十七节,python操作redis缓存-List类型,可以理解为列表
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类型,可以理解为列表的更多相关文章
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...
- 第二百九十五节,python操作redis缓存-字符串类型
python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
- 第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型
第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型 Hash操作,redis中Hash在内存中的存储格式如下图: hset(name, key, value)name ...
- 第三百零一节,python操作redis缓存-管道、发布订阅
python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...
- 第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置
第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置 主题设置是在xadmin\plugins\themes.py这个文件 默认xadmin是通过下面这 ...
- 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型
python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...
- python操作Redis缓存
python操作Redis缓存 https://www.cnblogs.com/guotianbao/p/8683037.html 学习资料:电子书资源 联系邮箱:gmu1592618@gmail.c ...
- 第二百六十七节,Tornado框架-分页封装模块
Tornado框架-分页封装模块 框架引擎 #!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web # ...
随机推荐
- springboot admin
转 Spring Boot Admin的使用 作者 杜琪 关注 2015.12.25 17:30* 字数 1803 阅读 16569评论 21喜欢 55 上一篇文章中了解了Spring Boot提供的 ...
- MySQL Proxy 实现 MySQL 读写分离提高并发负载
还在学习,学完了在写笔记 (这个先安装lua:https://www.cnblogs.com/fps2tao/p/9163959.html ) 工作拓扑: MySQL Proxy有一项强大功能是实现“ ...
- Java web中WEB-INF目录理解
WEB-INF是Java的WEB应用的安全目录.所谓安全就是客户端无法访问,只有服务端可以访问的目录.如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问. ...
- 【Android】17.0 第17章 服务绑定—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-03-03 一.简介 通过服务绑定(Bound Services),可以轻松实现后台服务与界面(UI)的交互. 二.本章示例主界面 1. ...
- 【Android】12.2 利用Intent启动和关闭Activity
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...
- linux perf and tracer ,java Flame Graph
http://www.brendangregg.com/flamegraphs.html http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/rev/e826 ...
- 李洪强和你一起学习前端之(6)css行高,盒模型,外边距
李洪强和你一起学习前端之(6)css行高,盒模型,外边距 复习昨天的知识 1.1css书写位置: 内嵌式写法 外联式写法 <link href = "1.css" rel = ...
- div设置contentEditable="true"作为文本编辑器,定位光标解决办法
function set_focus(el) { el = el[0]; // jquery 对象转dom对象 el.focus(); if ($.browser.msie) { ...
- feginclient和ribbon的重试策略
//自定义重试次数// @Bean// public Retryer feignRetryer(){// Retryer retryer = new Retryer.Default(100, 1000 ...
- 又谈C++指针(1)
写在前面的话:虽然这段代码中对于指针的使用是不正确的,但是我却在这个不正确的代码中发现了另一个错误,而且深感迷惑,所以打算将此博文推到首页,请各位帮忙回答个问题. 在项目中用到了以下一段代码,执行结果 ...