Redis三(List操作)

List操作

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

lpush(name,values)


1

2

3

4

5

6

7

8

# 在name对应的list中添加元素,每个新的元素都添加到列表的最左边

# 如:

    # r.lpush(‘oo‘, 11,22,33)

    # 保存顺序为: 33,22,11

# 扩展:

    # rpush(name, values) 表示从右向左操作

lpushx(name,value)


1

2

3

4

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

# 更多:

    # rpushx(name, value) 表示从右向左操作

llen(name)


1

# name对应的list元素的个数

linsert(name, where, refvalue, value))


1

2

3

4

5

6

7

# 在name对应的列表的某一个值前或后插入一个新值

# 参数:

    # name,redis的name

    # where,BEFORE或AFTER

    # refvalue,标杆值,即:在它前后插入数据

    # value,要插入的数据

r.lset(name, index, value)


1

2

3

4

5

6

# 对name对应的list中的某一个索引位置重新赋值

# 参数:

    # name,redis的name

    # index,list的索引位置

    # value,要设置的值

r.lrem(name, value, num)


1

2

3

4

5

6

7

8

# 在name对应的list中删除指定的值

# 参数:

    # name,redis的name

    # value,要删除的值

    # num,  num=0,删除列表中所有的指定值;

           # num=2,从前到后,删除2个;

           # num=-2,从后向前,删除2个

lpop(name)


1

2

3

4

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

# 更多:

    # rpop(name) 表示从右向左操作

lindex(name, index)


1

在name对应的列表中根据索引获取列表元素

lrange(name, start, end)


1

2

3

4

5

# 在name对应的列表分片获取数据

# 参数:

    # name,redis的name

    # start,索引的起始位置

    # end,索引结束位置

ltrim(name, start, end)


1

2

3

4

5

# 在name对应的列表中移除没有在start-end索引之间的值

# 参数:

    # name,redis的name

    # start,索引的起始位置

    # end,索引结束位置

rpoplpush(src, dst)


1

2

3

4

# 从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边

# 参数:

    # src,要取数据的列表的name

    # dst,要添加数据的列表的name

blpop(keys, timeout)


1

2

3

4

5

6

7

8

# 将多个列表排列,按照从左到右去pop对应列表的元素

# 参数:

    # keys,redis的name的集合

    # timeout,超时时间,当元素所有列表的元素获取完之后,阻塞等待列表内有数据的时间(秒), 0 表示永远阻塞

# 更多:

    # r.brpop(keys, timeout),从右向左获取数据

brpoplpush(src, dst, timeout=0)


1

2

3

4

5

6

# 从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧

# 参数:

    # src,取出并要移除元素的列表对应的name

    # dst,要插入元素的列表对应的name

    # timeout,当src对应的列表中没有数据时,阻塞等待其有数据的超时时间(秒),0 表示永远阻塞

自定义增量迭代


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# 由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要:

    # 1、获取name对应的所有列表

    # 2、循环列表

# 但是,如果列表非常大,那么就有可能在第一步时就将程序的内容撑爆,所有有必要自定义一个增量迭代的功能:

def list_iter(name):

    """

    自定义redis列表增量迭代

    :param name: redis中的name,即:迭代name对应的列表

    :return: yield 返回 列表元素

    """

    list_count = r.llen(name)

    for index in xrange(list_count):

        yield r.lindex(name, index)

# 使用

for item in list_iter(‘pp‘):

    print item

时间: 2024-10-29 10:48:00

Redis三(List操作)的相关文章

Linux-NoSQL之Redis(三)

一.Redis数据常用操作 1.string常用操作 set key1  aminglinux get key1 set key1  aming //一个key对应一个value,多次赋值,会覆盖前面的value setnx key2 aaa   //返回1 get key2 setnx key2 bbb  //返回0 说明:setnx 如果key存在,则返回0,不存在会直接创建这个key setex key3  10  1 //这个是用来给key设定过期时间的 mset  key1 1  ke

redis集群介绍、redis集群搭建配置、redis集群操作

一:redis集群介绍 多个redis节点网络互联,数据共享所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为.支持在线增加.删除节点客户端可以连任何一个主节点进行读写 二:redis集群搭建配置 场景设置:两台机器,分别开启三个Redis服务(端口)A机器上三个端口7000,7002,7004,全部为主B机器上三个端口7001,

配置redis三主三从

主从环境 centos7.6 redis4.0.1 主 从 192.168.181.139:6379 192.168.181.136:6379 192.168.181.136:6380 192.168.181.137:6380 192.168.181.137:6381 192.168.181.139:6381 集群实例配置 这里展示192.168.181.139:6379节点的,其他配置修改ip.端口号和文件名 bind 192.168.181.139 port 6379 pidfile /va

缓存数据库-redis数据类型和操作(list)

转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素). List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: 二:列表常用操作 1)lpush(name,values)  在name对应的l

Redis 以及 Python操作Redis

Redis Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis有以下特点: -- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. -- Redis支持五种数据类型. -- Redis支持数据库备份. Redis的优势: -- Redis性能极高,读的速度是110000次/s,写的速度是81000次/s. -- Redis丰富的数据类型,String,Lists,Hashes,Sets以及Ordered S

redis的常用操作

redis的介绍: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis

Redis 三:存储类型之字符串

1.赋值单个: set a 100 [赋值多个:mset a 100 b 200 c 300] 2.取值单个: get a [取值多个:mget a b c] 3.数字递增 incr a 在a的基础上+1,那就是返回101 如果预先的值为0,那么返回1,如果预先的值不是整形,则返回错误“is not an integer...” 3.1 数字递减 decr 用法跟上面一样 decr 4.约定(命名方式) 对象类型:对象ID:对象属性 user:100:friends 存储用户id为100的好友列

强大的JQuery(三)--操作html与遍历

前两篇博客讲到了JQuery的基础知识以及其动画效果,本篇将为大家介绍jquery操纵html以及jquery的遍历. 一.jquery操作html 1.获取内容和属性 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 attr()- 方法用于获取属性值. 实例: <span style="font-size:18px;">$("#btn1").cl

redis的hash操作在集中式session中的应用

在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共享的两大因素: 1. session必须有ha机制,集群中部分服务器发生故障时,保证session不丢失. 2. session的生命周期管理. 3. session的大小未知,整体的序列化和反序列化成本比较高. redis的解决方式 1. redis具有持久化功能,且sentiment具有ha功效

[eclipse] 三个操作技巧

1.快捷键Ctrl+Shift+i:Debug调试中直接获取方法的返回值 在下图代码中,想知道getHost(),则在调试时运行完该句代码后,选中"urlURL.getHost()",按快捷键"Ctrl + Shift + i",则可以看到该方法的返回值了. 2.查看类/方法/属性/变量都在哪些地方引用到 双击选中该类/方法/属性/变量,右击出现上下文菜单→References→Project,即出现了所有的调用方法. 3.查看某个接口的实现列表 双击选中接口或接口