国外网站dns改成什么快帝国cms怎么做音乐网站
国外网站dns改成什么快,帝国cms怎么做音乐网站,黑群晖建设个人网站,异常网站服务器失去响应只有克服了情感的波动#xff0c;才能专心致志地追求事业的成功 目录
列表
list命令
lpush
lpushx
rpush
rpushx
lrange
lpop
rpop
lindex linsert
llen
lrem
ltrim
阻塞命令
小结 列表 列表相当于 数组或者顺序表。 列表类型是用来存储多个有序的字符串…只有克服了情感的波动才能专心致志地追求事业的成功 目录
列表
list命令
lpush
lpushx
rpush
rpushx
lrange
lpop
rpop
lindex linsert
llen
lrem
ltrim
阻塞命令
小结 列表 列表相当于 数组或者顺序表。 列表类型是用来存储多个有序的字符串如图 2-19 所示a、b、c、d、e 五个元素从左到右组成了一个有序的列表列表中的每个字符串称为元素element一个列表最多可以存储 个元 素。在 Redis 中可以对列表两端插入push和弹出pop还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构它可以充当栈和队列的角色在实际开发上有很多应用场景。 注意它内部的编码方式并非是一个简单的数组而是更接近于“双端队列”。可以做到比较高效的头插头删尾插尾删。 当然也特供了许多的获取和删除的操作 列表类型的特点
列表中的元素是有序的这意味着可以通过索引下标获取某个元素或者某个范围的元素列表 例如要获取上图图的第 5 个元素可以执行 lindex user:1:messages 4 或者倒数第 1 个元素lindex user:1:messages -1 就可以得到元素 e。区分获取和删除的区别例如上图 中的 lrem 1 b 是从列表中把从左数遇到的前 1 个 b 元素删除这个操作会导致列表的长度从 5 变成 4但是执行 lindex 4 只会获取元素但列表长度是不会变化的。列表中的元素是允许重复的例如上图中的列表中是包含了两个 a 元素的。但是像hash这样的结构中的field是不能重复的如果重复hset就会覆盖原来的field。 列表的元素是有序的如果把元素的位置颠倒顺序调换此时得到的list就和原来的list不等价。 下面是关于list的一些命令。
list命令 下面的lpush中第一个字母其实是left也就是left pushrpush就是right push。
lpush 将一个或者多个元素从左侧插入队列中。
语法lpush key element [ element ..... ]
时间复杂度O1或者ON只插入一个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数。多个element之间使用空格间隔。返回值list的长度例如插入了1,2,3这三个数字那么返回值就是3。如果key已经存在并且key对应的value类型不是list此时lpush就会报错。
示例 lpushx 在 key 存在时将一个或者多个元素从左侧放入头插到 list 中。不存在直接返回他类似于setnx。
语法LPUSHX key element [element ...]
时间复杂度只插入一个元素为 O(1), 插入多个元素为 O(N), N 为插入元素个数.返回值插入后 list 的长度。多个elem之间使用空格间隔
示例 注意这里的lpushx的key一定是已经存在的key如果key不存在返回0。 rpush 类似于lpush只不过rpush是从最右侧插入相当于尾插
rpushx 在 key 存在时将一个或者多个元素从右侧放入尾插到 list 中 上面两个命令的用法和lpush与lpushx完全一致这里不做过多的解释。 除了设置list我总得能查看里面的数据吧别急当然有法子
lrange 获取从 start 到 end 区间的所有元素左闭右闭。
语法LRANGE key start stop
时间复杂度O(N)返回值指定区间的元素。
示例 首先创建一个list 根据我们在前言列表中提到的下标进行实验 获取除了“1”之外的值 最简便的获取所有元素的方法那就是0 - -1 因为-1代表最后一个元素。 lpop 从list左侧取出数据这个操作会直接降价左侧的第一个数据删除并作为返回值返回
语法lpop key
时间复杂度O1返回值为取出的元素或者nil。
示例 rpop 从尾部删除然后返回被删除的数据。
语法同lpop
示例 同lpop lindex 获取从左数第index位置的元素。此处的lindex中的l可以理解为list index,而不是left
语法lindex key index
时间复杂度ONn是指的list中的元素个数。返回值对应下标的元素。下标非法则返回nil
示例: 将这个list使用lindex获取其值。 linsert 在特定位置插入元素。你可以选择从左侧插入也可以从右侧插入你可以选择自己想要的但是你只能选择其中一种。
语法linsert key before | after pivot element
key 是你要插入的listbefore和after表明你要插入的时候在元素的前面还是后面pivot表示你要插入的基准元素(并非是元素而是真实值)element是你要插入的元素时间复杂度为ON返回值插入后的list长度。
示例 这就出现一个问题一个相同的元素在list中是可以同时存在多份的 所以list的linsert的基准是通过
linsert 进行插入的时候,要根据基准值,找到对应的位置从左往右,找到第一个符合基准值的位置即可。 llen 获取list的长度。llen中的第一个l为list也就是list length的意思。
语法llen key
时间复杂度O(1)返回值list 的长度也就是list中包含的元素个数。
示例 redis LPUSH mylist World (integer) 1 redis LPUSH mylist Hello (integer) 2 redis LLEN mylist (integer) 2 lrem list remove,
语法lrem key count element
count删除的个数。element 是要删除的值。 时间复杂度O(N M)N是list的长度M是删除元素的个数。如果count 0意思是从左往右数第一个element开始从左往右依次删除count个。如果count 0意思是从右往左数第一个element开始从右往左依次删除count个。如果count 0, 删除所有的值为element的元素。
示例 删除右边两个1 删除 ltrim 保留start和stop区间的元素。区间外的元素就被删除了。
语法ltrim key start stop
start是开始的下标stop是结束的下标此操作包含start和stop下标的元素也就是说start和stop下标的元素会被保留。时间复杂度ONN为删除的元素的个数。
示例 lset 根据下标修改元素可以类比lindex,lindex是根据下标获取元素而lset则是根据下标修改元素lset全称list set。
语法lset key index newValue。
时间复杂度ON。如果index越界的话会提示index out of range。
示例 设置list1 2 3 4, 然后修改下标为0的元素的值为5 阻塞命令 什么叫阻塞命令阻塞: 当前的线程,不走了代码不继续执行了。会在满足一定的条件之后,被唤醒。 关于阻塞的两个命令
brpopblpop 这个l为left的意思b则为block的意思意思为阻塞。咱们redis中的list就相当于一个阻塞队列线程安全的问题redis是靠单线程模型去提供支持的。而阻塞只支持队列为空的情况不考虑队列满。阻塞版本会根据timeout阻塞一段时间期间redis可以执行其他命令使用brpop和blpop的情况可以显示设置阻塞时间的不一定是无休止的等待。
语法brpop | blpop key [ key ... ] timeout
可以有多个key多个key之间使用空格间隔。多个key回从左往右依次遍历。timeout为阻塞时间。设置了timeout之后在timeout时间段内如果队列为空那么此操作会阻塞等待timeout时间直到时间到达或者队列中被别的客户端插入了元素。
小结
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88278.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!