第二百九十七节,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 # ...
随机推荐
- 免费申请 Github 私有仓库--学生和教育人士的福利
免费申请 Github 私有仓库 -学生和教育人士的福利 Github 是全球知名的软件项目托管网站.在 Github 创建私有仓库是需要收费的,收费方案有多种,费用最小的方案是每月 7 美元的“微型 ...
- Qt中使用DOM解析XML文件或者字符串(实例)
因为需要读取配置文件,我的配置文件采用xml:因此编写了使用qt读取xml文件内容的代码,xml文件如下: <?xml version="1.0" encoding=&quo ...
- Mac 下的矢量图设计工具
Mac 下的矢量图设计工具 一图胜千言.一张清晰的示意图无论对于系统设计,流程梳理,还是其他的方方面面,都非常重要. 曾经亲见一位老同事把 FreeHand 这个矢量绘图工具用得出神入化,并且非常成功 ...
- log4net 存储到oracle 调试 Could not load type [log4net.Appender.OracleAppender]
近期在弄webfrom oracle 调用 log4net 開始调试时不出数据,打开了log4net 自己的debug功能后发现: log4net: Logger [root] level set t ...
- NGUI ScrollView出屏幕再回来坐标混乱解决
主要是子节点没更新.乍一看调用UIPanel的Refresh()会管用,其实不然. 解决方法调用UIPanel的Invalidate让他所有子节点更新. panel.Invalidate(true);
- 详解设计模式在Spring中的应用---转载
Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫 ...
- 去除img、video之间默认间隔的几种方法
img,video{ /*第1种方式*/ border: ; vertical-align: bottom; /*第2种方式*/ outline-width:0px; vertical-align:t ...
- vue2.0 Hash模式下实现微信分享
1,通过后台,获取accessToken 和 签名jsApiTicket,并写入浏览器缓存(可以写在app.vue中) <script type="text/ecmascript-6& ...
- java.net.SocketException: Software caused connection abort: socket write erro
场景:接口测试 编辑器:eclipse 版本:Version: 2018-09 (4.9.0) testng版本:TestNG version 6.14.0 执行testng.xml时报错信息: 出现 ...
- WSAAsyncSelect 模型
WSAAsyncSelect模型是winsock编程模型的一种,它提供了socket异步编程的方便,其实现是基于Windows消息机制的,最主要的就是下面这个函数: int PASCAL FAR WS ...