企业速成网站,wordpress移除谷歌字体,wordpress主题 投稿,wordpress新建页面位置概要
Redis中的list类型相当于双端队列#xff0c;支持头插#xff0c;头删#xff0c;尾插#xff0c;尾删#xff0c;并且列表中的内容是可以重复的。
如果搭配使用rpush和lpop#xff0c;那么就相当于队列 如果搭配使用rpush和rpop#xff0c;那么就相当于栈
lpu…概要
Redis中的list类型相当于双端队列支持头插头删尾插尾删并且列表中的内容是可以重复的。
如果搭配使用rpush和lpop那么就相当于队列 如果搭配使用rpush和rpop那么就相当于栈
lpush
向列表中头插一个或多个元素返回list的长度。如果key已经存在并且对应的value不是list类型则报错
当插入多个元素时是一次头插例如插入1234那么列表中是4321 演示
lrange
查看list指定区间内的元素前闭后闭支持负数-1就相当于倒数第一个元素下标从0开始因此查看全部元素就是0-1 演示 展示的元素前面的序号并不是下标而是结果集专用的序号
需要注意的是如果我们给的下标超出了list的范围如果是其他语言可能就会报错或者抛出异常。但是在Redis中会尽可能的获取对应的内容这体现了Redis的鲁棒性
lpushx
从左侧插入当key不存在用法和lpush一致当key存在则插入失败返回0 演示
Rpush
向列表中尾插一个或多个元素返回list的长度。如果key已经存在并且对应的value不是list类型则报错 演示
rpushx
从右侧插入当key不存在用法和lpush一致当key存在则插入失败返回0 演示
lpop
头删list中的元素返回取出的元素的值。当列表为空则返回nil 演示
rpop
尾删list中的元素返回取出的元素的值。当列表为空则返回nil 演示
lindex
获取到指定位置的元素时间复杂度为ON如果下标非法则返回nil
演示
linsert
在list的指定处插入元素如果是before就插入在基准值前面如果是after就插入到基准值后面基准值是在list中存在的值而非下标时间复杂度是ON 演示 如果存在多个相同的基准值那么只插入到第一个基准值处
llen
获取列表的长度如果key不存在则返回0 lrem
删除指定的值count为要删除的个数
count的值作用count 0从头到尾删除count个指定的元素count 0删除所有指定的元素count 0从尾到头删除count个指定的元素 演示
ltrim
保留列表中start和stop之间的元素删除两边的元素 演示
lset
根据指定的下标修改元素如果下标越界则报错 演示
blpop/brpop
类似于阻塞队列如果队列为空尝试出队列阻塞队列根据阻塞时间产生阻塞期间Redis可以执行其他命令直到队列不空返回元素如果超时了就返回nil
命令中可以设置多个key从左到右遍历key哪个key的list中不空则返回元素 演示 队列不为空 队列为空时 先设置过期时间是100s 这边的客户端就阻塞了启动另一个服务器往队列里插入元素 这个服务器插入完元素上一个服务器就返回元素了
内部编码
编码方式细节ziplist 压缩列表列表元素个数小于512个同时每个元素的长度小于64字节linkedlist 俩表不满足上述条件
上述编码方式是老版本的Redis使用的新版本的Redis使用了quicklist相当于链表和压缩列表的结合整体是一个链表每个链表的节点是一个压缩链表
应用场景
作为数组存储多个元素
例如sql中有下面这两张表 那么在Redis中可以通过以下关联关系进行组织数据
作为消息队列 这三个消费者谁先执行brpop命令谁就可以先拿到新来的元素