zoukankan      html  css  js  c++  java
  • list类型







    lpush key value

    作用: 把值插入到链接头部

    rpop key

    作用: 返回并删除链表尾元素

    rpush,lpop: 不解释

    lrange key start stop

    作用: 返回链表中[start ,stop]中的元素
    规律: 左数从0开始,右数从-1开始

    lrem key count value

    作用: 从key链表中删除 value值
    注: 删除count的绝对值个value后结束
    Count>0 从表头删除
    Count<0 从表尾删除

    ltrim key start stop

    作用: 剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key

    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 k### ey after|before search value
    作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value
    注: 一旦找到一个search后,命令就结束了,因此不会插入多个value

    rpoplpush source dest

    作用: 把source的尾部拿出,放在dest的头部,
    并返回 该单元值

    场景: task + bak 双链表完成安全队列

    业务逻辑:
    1:Rpoplpush task bak
    2:接收返回值,并做业务处理
    3:如果成功,rpop bak 清除任务. 如不成功,下次从bak表里取任务

    brpop ,blpop key timeout

    作用:等待弹出key的尾/头元素,
    Timeout为等待超时时间
    如果timeout为0,则一直等待

    场景: 长轮询Ajax,在线聊天时,能够用到

    • Setbit 的实际应用
    

    场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为 今天活跃,否则记为不活跃

    每周评出: 有奖活跃用户: 连续7天活动
    每月评,等等...

    思路:

    Userid dt active
    1 2013-07-27 1
    1 2013-0726 1

    如果是放在表中, 1:表急剧增大,2:要用group ,sum运算,计算较慢

    用: 位图法 bit-map
    Log0721: ‘011001...............0’

    ......
    log0726 : ‘011001...............0’
    Log0727 : ‘0110000.............1’

    1: 记录用户登陆:
    每天按日期生成一个位图, 用户登陆后,把user_id位上的bit值置为1

    2: 把1周的位图 and 计算,
    位上为1的,即是连续登陆的用户

    redis 127.0.0.1:6379> setbit mon 100000000 0
    (integer) 0
    redis 127.0.0.1:6379> setbit mon 3 1
    (integer) 0
    redis 127.0.0.1:6379> setbit mon 5 1
    (integer) 0
    redis 127.0.0.1:6379> setbit mon 7 1
    (integer) 0
    redis 127.0.0.1:6379> setbit thur 100000000 0
    (integer) 0
    redis 127.0.0.1:6379> setbit thur 3 1
    (integer) 0
    redis 127.0.0.1:6379> setbit thur 5 1
    (integer) 0
    redis 127.0.0.1:6379> setbit thur 8 1
    (integer) 0
    redis 127.0.0.1:6379> setbit wen 100000000 0
    (integer) 0
    redis 127.0.0.1:6379> setbit wen 3 1
    (integer) 0
    redis 127.0.0.1:6379> setbit wen 4 1
    (integer) 0
    redis 127.0.0.1:6379> setbit wen 6 1
    (integer) 0
    redis 127.0.0.1:6379> bitop and res mon feb wen
    (integer) 12500001

    如上例,优点:
    1: 节约空间, 1亿人每天的登陆情况,用1亿bit,约1200WByte,约10M 的字符就能表示
    2: 计算方便

  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/qinsilandiao/p/10877413.html
Copyright © 2011-2022 走看看