文档章节

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
09/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

降压变换器 Buck

特点 输入输出极性相同。 工作过程 在 MOS 导通时,输入电源通过 L 和 C 滤波后向负载端提供电流;当 MOS 断开后,L 通过二极管续流,保持负载电流连续。输出电压因为占空比的作用,不会超过...

colinux
50分钟前
1
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
3
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部