建议大家使用FireFox、Opera、Safri、IE8+等主流浏览器访问本站,否则可能会出现不兼容等问题!

Redis 列表(LIST)详撸-笔记

Redis 凶恶的方块 994次浏览 已收录 0个评论

前言:

列表类型(LIST)可以储存一个有序字符串,常用的方法是从两端进行元素操作,也可以获取某一个片段,不过大量数据的索引存在瓶颈(不建议那么做)。

列表类型内部使用双向链表(double linked list)实现的,因此从几千万个元素的两端获取的获取元素,其效率与从10个元素两端获取效率是相同的。

应用场景分析:例如微博,空间,新鲜事消息推送等。因为获取列表前m条信息是非常快速的。列表还可以作为队列实现,之前的文章涉及到一点。

这次带有应用场景的场景,all in the memories。尝试使用redis作为唯一数据库进行场景举例。

正文

命令: Lpush Rpush key value 从两边开始进行压入操作 返回元素增加后列表长度。

LPOP RPOP 从两边移除元素  返回移除元素值。

LIEN numbers 获取 元素量

//例如获取评论列表,或者文章列表第N-M条。

LRANGE key  start  stop  返回范围值 初始索引为0  stop 范围若越界则返回列表最右边元素。

LREM key count value 删除列表中前 count 个值为value 的元素,返回实际LREM删除的个数。 例如:LREM numbers -3,2 移除右边3个为 2的元素。

LINDEX key index 获取索引值    LSET key index value 设置索引的值

//可以作为一个保存100条记录的日志 (LPUSH logs “系统记录第101条”; LTRIM logs 0,99;)

LTRIM key start end 删除索引之外所有元素

LINSERT  key BEFORE|AFTER fkwebs value 向 key 中fkwebs前|后 中插入值value的数字。

//此命令可以不断的从两个列表之间进行进行转移接受的操作,例如实现一个网址监控系统,进行循环的转移检测的队列。

RPOPLPUSH source desination 从source执行RPOP 压入desination 左边。

//若第source为空可进行阻塞,直到有新的元素被添加,可设置超时阻塞时间。

BRPOPLPUSH source desonation TIMEOUT

 

RPUSHX key value    向已有的LIST 添加多个值,若不存在操作无效

//用于阻塞,执行LIST的队列操作 详情看优先级队列那篇。

BLPOP key1 [key2 ] timeout //第一个   BRPOP key1 [key2 ] timeout //从后

 

 

 

 

 

 


方块网络 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Redis 列表(LIST)详撸-笔记
喜欢 (0)or分享 (0)
avatar
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址