zoukankan      html  css  js  c++  java
  • redis03----link 链表操作

    link 链表结构
    之前是操作字符串string
    链表:头元素,后面一个一个的指向后面的元素。Redis内部实现了链表的结构。链表的头尾,从一个元素找到另外的元素。   
    
    链表的名字也是一个key。
    
    flushdb:则数据全部没了。
    
    lpush key value 
    作用: 把值插入到链接头部
    r1:0>lpush chars "a"
    r1:0>rpush chars b
    r1:0>rpush chars c
    r1:0>lpush chars 0
    r1:0>lpush ls p q r s t 
    "21"
    r1:0>lrange chars 1 2
    1) "a"
    2) "b"
    
    r1:0>lrange chars 0 -1   //查看全部
    1) "0"
    2) "a"
    3) "b"
    4) "c"
    
    r1:0>lpop chars
    "a"
    r1:0>rpop chars
    "c"
    rpop key
    作用: 返回并删除链表尾元素,从右边删除。
    rpush,lpop: 不解释
    lrange key start  stop
    作用: 返回链表中[start ,stop]中的元素
    规律: 左数从0开始,右数从-1开始
    lrem key count value
    作用: 从key链表中删除 value值
    注: 删除count的绝对值个value后结束
    Count>0 从表头删除
    Count<0 从表尾删除
    
    r1:0>lrem ls 2 p    //删除值为p的并且只删除2个
    "1"
    ltrim key start stop
    作用: 剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key
    r1:0>ltrim ls 1 3
    "OK"
    lindex key index
    作用: 返回index索引上的值,
    如  lindex key 2
    llen key
    作用:计算链接表的元素个数
    redis 127.0.0.1:6379> llen task
    (integer) 3
    redis 127.0.0.1:6379> 
    linsert  key after|before search value
    作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value
    注: 一旦找到一个search后,命令就结束了,因此不会插入多个value
    
    r1:0>linsert ls after g1 g2    //找到多个g1也只插入一次,不会插入多个,
    "20"
    
    
    rpoplpush source dest     //右边弹出左边塞入,一次拿出来一个,一个越来越少一个越来越多
    作用: 把source的尾部拿出,放在dest的头部,
    并返回 该单元值
    
    场景: task + bak 双链表完成安全队列
    Task列表                             bak列表
            
            
    
    
    业务逻辑:
    对task里面的人进行update操作,如果update失败还可以从bak里获取重新update,
    1:Rpoplpush task bak
    2:接收返回值,并做业务处理
    3:如果成功,rpop bak 清除任务. 如不成功,下次从bak表里取任务
    
    
    brpop ,blpop  key timeout
    作用:等待弹出key的尾/头元素, 
    如果为空了就不能够rpop和lpop了,这里可以一直等着,直到有内容就继续pop。
    Timeout为等待超时时间
    如果timeout为0,则一直等待
    
    场景: 长轮询Ajax,在线聊天时,能够用到
  • 相关阅读:
    DockerFile构建镜像
    docker基本命令
    docker持久化
    JS 中 this 指向问题
    解决"/usr/local/bin/dockercompose: Permission denied"问题
    docker配置国内镜像
    docker网络
    国内常用镜像地址
    Visual Studio中快捷键收缩和展开代码段方法
    STM32中关于RCC时钟的理解
  • 原文地址:https://www.cnblogs.com/yaowen/p/8274926.html
Copyright © 2011-2022 走看看