Redis数据类型--List

Redis列表是简单的字符串列表,按照插入顺序排序。

你可以添加一个元素到列表的头部(左边)或者尾部(右边)

LPUSH 命令插入一个新的元素到头部,

RPUSH插入一个新元素到尾部.

当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。

相似的,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。这是非常方便的语义,因为他们被调用使用一个空列表完全就像他们被调用时使用一个不存在的键值(可以)做为参数。

一个列表最多可以包含 4294967295, 每个列表超过40亿个元素。 从时间复杂度的角度来看 Redis 列表的主要特征是在头和尾的元素插入和删除是固定时间,即便是数以百万计的插入。. 在列表的两端访问元素是非常快的但是如果你试着访问一个非常大的列表的中间的元素是很慢的,因为那是一个O(N)操作。

在一个社交网络中建立一个时间线模型,使用 LPUSH 去添加新的元素到用户的时间线, 使用 LRANGE 去接收一些最近插入的元素。

你可以将 LPUSH 和 LTRIM 一起用去创建一个永远也不会超过指定元素数目的列表,但是记住是最后的N个元素。

列表能够被用来作为消息传递primitive。

指令学习:

1)LPUSH的作用是将一个或多个值 value 插入到列表 key 的表头,执行成功时,返回列表长度

2)LSET可以将列表 key 下标为index的元素的值设置为 value
,列表 key 必须是已存在的,而且index不能超出列表长度范围。

3)LPOP命令执行时会移除列表第一个元素,并将其返回

4)获取列表元素,LINDEX命令,可以获取到指定位置的 value;下标 (index)为正数时,0表示第一个元素,1表示第二个元素,下标 可以是负数,以
-1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素。

5)LINSERT可以将值
value 插入到列表 key 当中,位于值 pivot 之前或之后,LINSERT
key BEFORE|AFTER pivot value

当 pivot 不存在于列表 key 时,不执行任何操作

6)移除列表元素使用LREM命令,根据参数 count 的值,移除列表中与参数 value 相等的元素

  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
  • count = 0 : 移除表中所有与 value 相等的值。

7)LLEN命令可以获取到列表的长度

8)LTRIM可以对一个列表进行修剪,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

http://www.cnblogs.com/stephen-liu74/archive/2012/03/16/2351859.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 01:24:28

Redis数据类型--List的相关文章

redis数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个键最大能存储512MB. 实例: 在以上实例中我们使用了 Redis

Redis数据类型之字典

Redis数据类型之字典 标签(空格分隔): redis redis的字典 字典又称符号表(symbol table),关联数组(associative array),或者映射(map).是用于保存键值对的一种抽象数据结构. 字典的key是唯一的,对键值对的操作基本都是基于key来操作的.redis中的数据库底层是使用字典来实现的,对于数据库的增删改查都是基于字典来实现的.redis的哈希键也是基于字典来实现的. 具体的实现是在src下的dict.h和dict.c文件 字典的数据结构 哈希表结点

Redis数据类型之链表

Redis数据类型之链表 链表的实现 redis的列表的底层实现就是一个双链表,源码在src下的adlist.h和adlist.c 链表的结点数据结构 /* * 双端链表节点 */ typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; 链表数据结构 /* * 双端链表结构 */ typedef struct l

Redis数据类型简介

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个键最大能存储512M

redis数据类型及使用场景

Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mget 等. 应用场景:String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类.即可以完全实现目前 Memcached 的功能,并且效率更高.还可以享受Redis的定时持久化,操作日志及 Replication等功能.除了提供与 Memcached 一样的get.set.in

Lua 数据类型和 Redis 数据类型之间转换

当 Lua 通过 call() 或 pcall() 函数执行 Redis 命令的时候,命令的返回值会被转换成 Lua 数据结构. 同样地,当 Lua 脚本在 Redis 内置的解释器里运行时,Lua 脚本的返回值也会被转换成 Redis 协议(protocol),然后由 EVAL 将值返回给客户端. 数据类型之间的转换遵循这样一个设计原则:如果将一个 Redis 值转换成 Lua 值,之后再将转换所得的 Lua 值转换回 Redis 值,那么这个转换所得的 Redis 值应该和最初时的 Redi

Redis 学习笔记(二) Redis 数据类型

Redis 数据类型 Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) string 类型是 redis 最基本的类型,很多人说如果去除本地持久化,只使用 string 的话,那 redis 就是一个 memcached.string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据.string 类型是二进

Redis-cluster集群【第一篇】:redis安装及redis数据类型

Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在去看redis的源码能看懂50-60%. redis目前最大的集群应该是新浪的应该. redis目前是vmvaer来支持的,很多的开源软件都需要某些组织来支持的.如果一个开源软件没有金钱来支持的话很难走的持久 二.Redis和Memcache对比 持久化:以电商举例,session用memcache

python在运维项目中用到的redis数据类型

先感叹下,学东西一定要活学活用!   我用redis也有几年的历史了,今个才想到把集合可以当python list用.  最近做了几个项目都掺杂了redis, 遇到了一些个问题和开发中提高性能的方法,这都分享出来,共同学习. 下面先简单讲讲Redis集合的数据类型. sadd,创建一个集合,并添加数据. [[email protected] ~]# redis-cli redis 127.0.0.1:6379>  redis 127.0.0.1:6379>  redis 127.0.0.1:6

Redis数据类型之字符串

Redis数据类型之字符串 redis的字符串 redis的字符串不是C语言原生的字符串,而是自己构建的称为简单动态字符串(simple dynamic string),简称 SDS,和C语言原生的字符串相似,使用'\0'作为结尾. 除了打印日志之外,我们操作字符串基本是在使用SDS SDS的在redis的主要功能 1. 保存数据库的字符串值 2. 用作缓冲区buffer SDS在redis的定义 在源码包下面的src目录下的sds.h 和sds.c typedef char *sds; /**