zoukankan      html  css  js  c++  java
  • redis 链表(list)操作

    redis 链表操作

    向链表添加数据

    l[r]push key value[s]
    例如:
    lpush chars a
    rpush chars b
    lpush chars c d e
    
    127.0.0.1:6379> lpush chars a
    (integer) 1
    127.0.0.1:6379> rpush chars b
    (integer) 2
    127.0.0.1:6379> rpush chars c
    (integer) 3
    127.0.0.1:6379> lpush chars 0
    (integer) 4
    

    查看链表数据

    lrange key start stop
    例如:
    lrange chars 0 -1  # 查看整个链表数据
    
    127.0.0.1:6379> lrange chars 0 -1
    1) "0"
    2) "a"
    3) "b"
    4) "c"
    

    从链表中弹出数据

    l[r]pop key
    例如:
    lpop chars
    rpop chars
    
    127.0.0.1:6379> lpop chars
    "0"
    127.0.0.1:6379> rpop chars
    "c"
    

    从链表中移除数据

    lrem key num value  # num 是移除几次, value 是要移除的 值
    例如:
    lrem answer 2 a  # 意思是 将链表中的 a 移除 两个
    lrem answer -2 a  # 意思是 反向 另一端
    
    127.0.0.1:6379> lpush answer a b c a b d a
    (integer) 7
    127.0.0.1:6379> lrange answer 0 -1
    1) "a"
    2) "d"
    3) "b"
    4) "a"
    5) "c"
    6) "b"
    7) "a"
    127.0.0.1:6379> lrem answer 1 b
    (integer) 1
    127.0.0.1:6379> lrange answer 0 -1
    1) "a"
    2) "d"
    3) "a"
    4) "c"
    5) "b"
    6) "a"
    
    127.0.0.1:6379> lrem answer -2 a
    (integer) 2
    127.0.0.1:6379> lrange answer 0 -1
    1) "a"
    2) "d"
    3) "c"
    4) "b"
    

    截取链表中的一段数据

    ltrim key start end
    例如:
    ltrim answer 0 3
    
    127.0.0.1:6379> ltrim answer 2 4
    OK
    127.0.0.1:6379> lrange answer 0 -1
    1) "c"
    2) "b"
    

    取出链表中某个位置的值

    lindex key index
    例如:
    lindex answer 1
    
    127.0.0.1:6379> lindex answer 1
    "b"
    127.0.0.1:6379> lindex answer 3
    (nil)
    

    查看链表长度

    llen key
    例如:
    llen answer
    
    127.0.0.1:6379> rpush answer a b c d
    (integer) 6
    127.0.0.1:6379> llen answer
    (integer) 6
    

    从一个链表中 pop 出数据 然后 push 进入另一个链表

    rpoplpush source dest  # source 源链表  dest 目标链表
    127.0.0.1:6379> lrange nums 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "6"
    5) "8"
    6) "9"
    127.0.0.1:6379> rpoplpush nums answer
    "9"
    127.0.0.1:6379> lrange answer 0 -1
    1) "9"
    2) "c"
    3) "b"
    4) "a"
    5) "b"
    6) "c"
    7) "d"
    

    定值前后插入

    linsert key [BEFOREafter] value1 value2
    # value1 是原数值  value2 是要插入的数值
    例如:
    127.0.0.1:6379> rpush nums 1 3 6 8 9
    (integer) 5
    127.0.0.1:6379> linsert nums BEFORE 3 2
    (integer) 6
    127.0.0.1:6379> lrange nums 0 -1
    1) "1"
    2) "2"
    3) "3"
    4) "6"
    5) "8"
    6) "9"
    

    等待 push 然后直接 pop 出去

    brpop key [key2 ...] timeout  # timeout 超时 自动 pop
    例如:
    brpop aa bb 10
    
    127.0.0.1:6379> brpop aa bb 10
    (nil)
    (10.12s)
    127.0.0.1:6379> brpop job 20  # 另外开了一个终端 push 数据
    1) "job"
    2) "e"
    (14.44s)
    
  • 相关阅读:
    分页内存管理——虚拟地址到物理地址的转换【转】
    设备树(device tree)学习笔记【转】
    08 在设备树里描述platform_device【转】
    [dts]Device Tree机制【转】
    设备树快速入门【转】
    Linux 设备树详解【转】
    设备树处理之——device_node转换成platform_device【转】
    最新内核3.4)Linux 设备树加载I2C client adapter 的流程(内核3.4 高通)【转】
    基于tiny4412的Linux内核移植 --- aliases节点解析【转】
    Linux 文件系统IO性能优化【转】
  • 原文地址:https://www.cnblogs.com/sha-ka/p/12779239.html
Copyright © 2011-2022 走看看