zoukankan      html  css  js  c++  java
  • Redis命令拾遗三(列表List类型)

    本文版权归博客园和作者吴双本人共同所有。转载和爬虫请注明原文地址

    Redis五种数据类型之列表类型

    Redis五种数据类型之列表类型。你可以存储一个有序的字符串列表一类数据。比如你想展示你所存储的所有文章中的前十条,当分页取下一页的时候,你也可以取接下来的十条。所以建议你维护一个文章ID的列表。其内部使用双向链表实现,这意味着在你获取一段头部和尾部的数据是极快的,但是在数据量大时获取列表中间部分的数据稍慢。因为链表通过索引访问数据。比如微信的朋友圈,我们关注的大部分只是最新的数据,所以这样的场景很合适。同时,在插入数据时,也是在左右两端插入,效率也不会受到影响。

    下面简单介绍一下命令:

    LPUSH Key Values.....  我们插入 3 4 5 6 7 8插入后 他们的结构应该是 8 7 6 5 4 3因为是一直向左插入嘛。

    1.RPUSH自然就是向右插入。

    2.LRANGE Key Start End命令,获取指定key的开始到结束索引的值。索引从0开始。负数索引的话,最右侧的元素是-1。如果说end小于start则返回空列表。0到-1的数据,自然就是最左侧到最右侧了。当然你也可以0-正值索引结束,返回的还是这几个数据。

    3.LPOP分别是从列表的最左侧和最右侧弹出一个元素,弹出也就是取出数据后从原列表移除掉了。Redis消息队列也正是依据这样的列表和弹出的原理。

    4.LLEN Key获取指定Key的集合长度。

    5.LINDEX Key index  返回指定Key的指定索引位置的值。

    6.LSET Key index val 替换指定索引(已存在的哟)位置的原有值。

    如果你的索引值超过集合界限,那么返回如下错误。如果你获取超过索引范围的值,那么会返回nil

    7.LTRIM key start end 删除指定索引外的所有值。比如你想实现一个只展示最新TOP10条的新闻列表,那么你就可以让LPUSH和LTRIM配合一下了。每次在左侧插入新数据后,都继续执行LTRIM key 0 9。其他数据自然删除了。

    8.LINSERT 在指定Key的执行值(注意是值,不是索引)的前面BEFORE或者后面AFTER插入目标值。如果你存在重复值,那么会报Arguments冲突。

    9.RPOPLPUSH  弹出右侧元素,并且存到新的集合中。如果你需要循环利用一个集合中的数据,你也可以RPOPLPUSH sourceList sourceList。从源集合到源集合当中。

    10.LREM,删除指定Key中前多少个值为xxx的元素

    有些命令你可能今天用不到,但是积累起来,相信有一天需求一出现,你立马能反应出来。
  • 相关阅读:
    AppDomain and related
    实现 Finalize 和 Dispose 以清理非托管资源
    递归显示treeview,求更好方法
    SQL练习题之子查询
    jquery in action 学习笔记
    daily english 201117
    TOP AND APPLY
    Create trace with tsql
    (转)sqlserver 锁查看
    一个简单的windows services demo(c#)
  • 原文地址:https://www.cnblogs.com/tdws/p/5782347.html
Copyright © 2011-2022 走看看