文档章节

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 两种数据的持久化保存方式,保证了 ...

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

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

waterandair
2017/11/29
0
0
Redis及Spring-Data-Redis入门学习

继上一篇Solr和Spring Data Solr学习,我们思考一个问题,使用Solr的目的是什么?肯定是为了加快服务器的相应速度。因为即使不适用Solr,通过请求数据库我们一样能完成搜索功能,但是这样会给...

TyCoding
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat 设置虚拟路径

Tomcat无法管理<Tomcat安装目录>/webapps目录以外的Web应用程序 在server.xml中配置虚拟目录 <Context path="/imgDetail" docBase="/pictureServer/img/resource"/> 配置前访问图片路径:h......

west_coast
29分钟前
0
0
数据结构

wu

盼望明天
43分钟前
4
0
Bash脚本输入参数的使用

Bash脚本输入参数的使用 Bash脚本传入的参数,在脚本中以位置的形式进行访问,即 $n 。例如,$1 为执行脚本的第一个参数,$2 为执行脚本的第二个参数。另外Bash中还提供了一些其它的便捷操作...

小陶小陶
今天
3
0
多线程场景下,触发OOM的线程是否会影响其他线程的工作

public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { int i = 0;......

麦馍
今天
4
0
模拟Dubbo的zookeeper一致性Hash发现

接之前一篇<手写zookeeper来模拟dubbo的注册/发现>,使用一致性Hash来进行查找需要寻找的服务. Hash处理接口 public interface HashFunc { public Long hash(Object key);} 一致性Has...

算法之名
今天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部