lpush key value 

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

rpop key

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

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  key after|before search value 

作用: 在key链表中寻找’search’,并在search值之前|之后,.插入value

注: 一旦找到一个search后,命令就结束了,因此不会插入多个value  

rpoplpush source dest
作用: 把source的尾部拿出,放在dest的头部,
并返回 该单元值 场景: task + bak 双链表完成安全队列
Task列表 bak列表 1 1 1 1 1 1 业务逻辑:
:Rpoplpush task bak
:接收返回值,并做业务处理
:如果成功,rpop bak 清除任务. 如不成功,下次从bak表里取任务
brpop ,blpop  key timeout

作用:等待弹出key的尾/头元素,

Timeout为等待超时时间

如果timeout为0,则一直等待

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

Setbit 的实际应用

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

每周评出: 有奖活跃用户: 连续7天活动
每月评,等等... 思路: Userid dt active
--
- 如果是放在表中, :表急剧增大,:要用group ,sum运算,计算较慢 用: 位图法 bit-map
Log0721: ‘...............’ ......
log0726 : ‘...............’
Log0727 : ‘.............’ : 记录用户登陆:
每天按日期生成一个位图, 用户登陆后,把user_id位上的bit值置为1 : 把1周的位图 and 计算,
位上为1的,即是连续登陆的用户 redis 127.0.0.1:> setbit mon
(integer)
redis 127.0.0.1:> setbit mon
(integer)
redis 127.0.0.1:> setbit mon
(integer)
redis 127.0.0.1:> setbit mon
(integer)
redis 127.0.0.1:> setbit thur
(integer)
redis 127.0.0.1:> setbit thur
(integer)
redis 127.0.0.1:> setbit thur
(integer)
redis 127.0.0.1:> setbit thur
(integer)
redis 127.0.0.1:> setbit wen
(integer)
redis 127.0.0.1:> setbit wen
(integer)
redis 127.0.0.1:> setbit wen
(integer)
redis 127.0.0.1:> setbit wen
(integer)
redis 127.0.0.1:> bitop and res mon feb wen
(integer) 如上例,优点:
: 节约空间, 1亿人每天的登陆情况,用1亿bit,约1200WByte,约10M 的字符就能表示
: 计算方便

  

ltrim key start stop

redis link 链表结构的更多相关文章

  1. 双链表【参照redis链表结构】

    参照了Redis里面的双链表结构,可以说是完全复制粘贴,redis的双链表还是写的很通俗易懂的,没有什么花里胡哨的东西,但是redis还有个iter迭代器的结构来遍历链表.我这里就没有实现了,只是实现 ...

  2. Redis数据结构—链表与字典的结构

    目录 Redis数据结构-链表与字典的结构 链表 Redis链表节点的结构 Redis链表的表示 Redis链表用在哪 字典 Redis字典结构总览 Redis字典结构分解 Redis字典的使用 Re ...

  3. Redis 链表结构 和 常用命令

    Redis 数据结构 --链表(linked-list) 命令 说明 备注 lpush key node1 [node2 ...] 把节点 node1 加入到 链表最左边 如果是 node1.node ...

  4. redis 压缩链表

    redis 压缩链表 概述 压缩链表是相对于普通链表而言的 当普通链表的数据越来越多, 链表查询性能会低效 当存储的数据较少时, 使用链表存储会浪费空间 压缩链表本质上是一个字符串 压缩链表内存储的数 ...

  5. 【Redis源代码剖析】 - Redis内置数据结构之压缩字典zipmap

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51111230 今天为大家带来Redis中zipmap数据结构的分析,该结构定义在 ...

  6. Redis数据结构—链表与字典

    目录 Redis数据结构-链表与字典 链表 Redis链表节点的结构 Redis链表的表示 Redis链表用在哪 字典 Redis字典结构总览 Redis字典结构分解 哈希算法 解决键冲突 rehas ...

  7. 数据结构:单链表结构字符串(python版)改进

    此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...

  8. javascript中的链表结构—双向链表

    1.概念 上一个文章里我们已经了解到链表结构,链表的特点是长度不固定,不用担心插入新元素的时候新增位置的问题.插入一个元素的时候,只要找到插入点就可以了,不需要整体移动整个结构. 这里我们了解一下双向 ...

  9. [pjsip]Pjlib中的链表结构

    Pjlib的链表结构跟常见的链表结构有所区别,如下图所示: 图1:一般链表结构 图2:pjlib中的链表结构 可以看到一般的双向链表是链表节点包含数据域,而pjlib中是数据域包含链表节点.一般的链表 ...

随机推荐

  1. MySql C++调用库Connector/c++编译 和 接口封装【三】Connector/c++ 使用总结及封装

    工程需要加上各个路径: 库使用需要几个文件: 1.include 文件夹 c/c++ /常规/附加包含目录 Connector/c++ 的安装版里面的Include 文件夹.或者把 /driver以及 ...

  2. Java实现一个简单的缓存方法

    缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创 ...

  3. kettle中执行sql语句

    一.直接执行sql,不添加任何参数 1.先找出执行sql语句的控件 2.打开控件,填写要执行的sql语句,主要下图中的红框中选项,后面会介绍各个选项的作用 二.执行sql,变量替换选项,变量指的是ke ...

  4. 关于datatable导出execl

    导出主要考虑响应流的问题 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Resp ...

  5. 关于Unity中UI中的RawImage节点以及制作地图滚动效果

    一.贴图的Texture Type属性类型 Texture:会把贴图的大小转换为最相近的2的n次方,比如400X1369会转换为512X1024. Sprite 2D:是贴图的原始大小. 二.RawI ...

  6. ST500LT012-1DG142硬盘參数

    ATA 设备物理信息 制造商 Seagate 硬盘名称 Momentus Thin 500LT012 形状特征 2.5" 格式化容量  500 GB 盘片数 1 记录面 2 外形尺寸 100 ...

  7. seqtk 的安装和使用

    seqtk 是一款针对fasta/fastq 文件进行处理的小程序,有很多的功能,速度很快,很方便: 源代码:https://github.com/lh3/seqtk 安装: git clone ht ...

  8. c++ ++i and i++

    ++i 在 i 存储的值上增加一并向使用它的表达式 ``返回" 新的, 增加后的值; 而 i++ 对 i 增加一, 但返回原来的是未增加的值. 至于++i和i++有什么区别,举个例子 1.a ...

  9. Linux的缓存内存 Cache Memory详解

    http://www.ha97.com/4337.html PS:前天有童鞋问我,为啥我的Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高 ...

  10. Adobe Acrobat 不能打开在线pdf。Adobe Acrobat 应用程序正在被终止,因为内存错误

    Adobe Acrobat 应用程序正在被终止,因为内存错误. Adobe Acrobat 不能打开在线pdf. 当出现上面两种错误时. 原因可能是Acrobat的更新有问题. 解决方法:打开C:\D ...