文档章节

Redis数据库list类型

webphp
 webphp
发布于 2017/07/26 11:28
字数 1146
阅读 9
收藏 0

一、List类型及操作

    1、简介
    List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字,Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以做为队列
    2、类型操作
        1)、lpush
            在key对应list的头部添加字符串元素
            如:lpush mylist "world"
//lpush相当于php中栈一样,先压入的数据后出,插入一个新的元素头部(左边)
127.0.0.1:6379> lpush mylist value1
(integer)1
127.0.0.1:6379> lpush mylist value2
(integer)2
//lrange是获取列表的值(0:从列表的第一个元素获取,-1:列表的尾)
127.0.0.1:6379> lrange mylist 0-1
1)value2
2)value1
        2)、lrange
            获取mylist中的值,LRANGE 利用了两个检索值,0表示list的开头第一个,-1表示list的倒数第一个,即最后一个。-2则便是list的倒数第二个,以此类推。
//lrange mylist 0 -1 //代表从mylist中的开头一直取到尾0代表第一个元素,-1代表最后一个元素
127.0.0.1:6379> lpush mylist hello
(integer)1
127.0.0.1:6379> lpush mylist world
(integer)2
127.0.0.1:6379> lrange mylist 0-1
1) world
2) hello
 
        3)、rpush
            在key对应list的尾部添加字符串元素
//rpush相当于php中队列一样,先压入的数据先出,插入一个新的元素尾部(右边)
127.0.0.1:6379> rpush mylist hello
(integer)1
127.0.0.1:6379> rpush mylist world
(integer)2
//lrange是获取列表的值(0:从列表的第一个元素获取,-1:列表的尾)
127.0.0.1:6379> lrange mylist 0-1
1)hello
2)world
        4)、linsert
            在key对应的list的特定位置前或后添加字符串
            如:linsert mylist before "world" "hello" //在world前添加一个元素
127.0.0.1:6379> lrange mylist 0-1
1)"hello"
2)"world"
3)"beijing"
4)"huajun"
127.0.0.1:6379> linsert mylist before world Love
(integer)5
127.0.0.1:6379> lrange mylist 0-1
1)"hello"
2)"Love"
3)"world"
4)"beijing"
5)"huajun"
127.0.0.1:6379> linsert mylist after huajun group
(integer)6
127.0.0.1:6379> lrange mylist 0-1
1)"hello"
2)"Love"
3)"world"
4)"beijing"
5)"huajun"
6)"group"
127.0.0.1:6379>
        5)、lset
            设置list中指定下标的元素值
            如:lset mylist 0 "world"
127.0.0.1:6379> lrange mylist 0-1
1)"hello"
2)"Love"
3)"world"
4)"beijing"
5)"huajun"
6)"group"
127.0.0.1:6379> lset mylist 0Hello
OK
127.0.0.1:6379> lrange mylist 0-1
1)"Hello"
2)"Love"
3)"world"
4)"beijing"
5)"huajun"
6)"group"
127.0.0.1:6379>
        6)、lrem
            从key对应list中删除n个和value相同的元素(n<0从尾删除,n=0全部删除)
            如:lrem mylist 1 "hello" //从mylist列中删除一个和hello相同的值
127.0.0.1:6379> lrange mylist 0-1
1)"Hello"
2)"Love"
3)"Hello"
4)"beijing"
5)"huajun"
6)"group"
7)"Hello"
127.0.0.1:6379> lrem mylist -1Hello//将尾部的Hello删除
(integer)1
127.0.0.1:6379> lrange mylist 0-1
1)"Hello"
2)"Love"
3)"Hello"
4)"beijing"
5)"huajun"
6)"group"
127.0.0.1:6379> lrem mylist 1Hello //将mylist开头的Hello删除
(integer)1
127.0.0.1:6379> lrange mylist 0-1
1)"Love"
2)"Hello"
3)"beijing"
4)"huajun"
5)"group"
127.0.0.1:6379> lrem mylist 0Hello//将mylist中全部的Hello删除
(integer)1
127.0.0.1:6379> lrange mylist 0-1
1)"Love"
2)"beijing"
3)"huajun"
4)"group"
         7)、ltrim
            保留指定key的值范围内的数据
            如:ltrim mylist 1 -1 //意思为保留mylist列表中的从下标为1的开始到结尾的全部保留,其它的删除
127.0.0.1:6379> lrange mylist 0-1
1)"Love"
2)"beijing"
3)"huajun"
4)"group"
127.0.0.1:6379> ltrim mylist 0-1//相当于没有删除任何元素
OK
127.0.0.1:6379> lrange mylist 0-1
1)"Love"
2)"beijing"
3)"huajun"
4)"group"
127.0.0.1:6379> ltrim mylist 1-1
OK
127.0.0.1:6379> lrange mylist 0-1//将下标为0的删除
1)"beijing"
2)"huajun"
3)"group"
        8)、lpop
            从list的头部删除元素,并返回删除元素
            如:
127.0.0.1:6379> lrange mylist 0-1
1)"hello"
2)"world"
127.0.0.1:6379> lpop mylist
hello
127.0.0.1:6379> lrange mylist 0-1
world
    9)、rpop
        从list的尾部删除元素,并返回删除元素
127.0.0.1:6379> rpush mylist a b c
(integer)1
127.0.0.1:6379> lrange mylist 0-1
1)"a"
2)"b"
3)"c"
127.0.0.1:6379> rpop mylist
c
127.0.0.1:6379> lrange mylist 0-1
1) a
2) b
    10)、rpoplpush
        从第一个list的尾部移除元素并添加到第二个list头部
127.0.0.1:6379> lrange mylist 0-1
1)"huajun"
2)"hello"
3)"world"
127.0.0.1:6379> rpush mylist2 redis
(integer)1
127.0.0.1:6379> lrange mylist2 0-1
1)"redis"
127.0.0.1:6379> rpoplpush mylist mylist2
"world"
127.0.0.1:6379> lrange mylist 0-1
1)"huajun"
2)"hello"
127.0.0.1:6379> lrange mylist2 0-1
1)"world"
2)"redis"
    11)、lindex
        返回名称为key的list中index位置元素(index代表列表中的索引值)
lrange mylist 0-1
1)"three"
2)"foo"
lindex mylist 0
three
lindex mylist 1
foo
    12)、llen
        返回key对应的list的长度(相当于php中count()函数。返回数组的元素个数)
lrange mylist 0-1
1)"one"
2)"two"
3)"three"
llen mylist
(integer)3

© 著作权归作者所有

共有 人打赏支持
webphp
粉丝 1
博文 92
码字总数 92338
作品 0
海淀
程序员
私信 提问
ITOO---“秒杀”选课之Redis序列化

1.我的选课 在进行选课活动中了为了尽量减少客户端和数据库的连接次数,在实现的思路是这样设计的:客户端的请求优先访问Redis缓存空间,如果Redis中没有则从数据库中加载,并添加到Redis中。...

mengdonghui123456
2017/08/06
0
0
不会这门技术也想年薪百万?Redis内存数据库知识精讲

     内存数据库   1. Redis产生背景   随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组...

大数据头条
2017/12/13
0
0
Redis数据类型及应用场景-加米谷大数据

一、 redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog 提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 ...

加米谷大数据
2018/04/25
0
0
Redis 数据类型及应用场景

一、 redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog 提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 ...

waterandair
2017/11/29
0
0
redis源码分析之内存布局

介绍 众所周知,redis是一个开源、短小、高效的key-value存储系统,相对于memcached,redis能够支持更加丰富的数据结构,包括: 字符串(string) 哈希表(map) 列表(list) 集合(set) ...

wangdy
2016/07/05
6
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象三大特性之继承

1:继承,顾名思义就是子代继承父辈的一些东西,在程序中也就是子类继承父类的属性和方法。 1 #Author : Kelvin 2 #Date : 2019/1/16 18:57 3 4 class Father: 5 money=1000...

编辑之路
7分钟前
0
0
Html CSS学习(六)background-position背景图像的定位

Html CSS学习(六)background-position背景图像的定位 在网页中,会有很多的背景图像与一些小的图标等内容,在初学的时候,为了达到页面的效果,都是将原图切割成很多个独立的文件,这样,将...

AzureMonkey
26分钟前
0
0
6个使用KeePassX保护密码的技巧

虽然安全是个深奥的主题,但是你可以遵循几个简单的日常习惯来减小攻击面。本文将解释确保密码信息安全的重要性,并给出如何充分利用KeePassX的建议。 日益互联的数字世界使安全成为一个重要...

linuxprobe16
32分钟前
0
0
tac 与cat

tac从后往前看文件,结合grep使用

writeademo
今天
3
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部