Redis数据结构(四)

存储list:
list存储方式采用头和尾插入的方式,这样效率快,如果没有这个插入的数据,redis自己会创建这个数据,如果是中间插入的话,采用list方式效率就会很慢。

ArrayList使用数组方式:
采用索引的方式,去查询的速度是非常快的,新增和删除操作,涉及到位移操作,所以比较慢,
LinkedList使用双向链接方式:
每个元素都记录了前后元素的指针,插入和删除操作时候,只是改变了前后元素的指针操作即可,速度就会非常快了。
(1)双向链表插入数据
(2)双向链表删除数据

存储list常用命令:
(1)两端添加
链表左端添加:
语法:lpush [key][value][value]
lpush mylist a b c
语法:rpush [key][value][value]
lpush mylist2 1 2 3
(2)查看列表
语法:lrange [table][start][end] (从零开始计数,负数从表尾开始)
lrange mylist 0 5
lrange mylist2 0 -2

(3)两端弹出
从列表中弹出数据,这时列表中就没有数据了
左端弹出:
lpop mylist
右端弹出:
rpop list
(4)获取列表元素个数
左端查看:
llen mylist
(5)扩展命令
仅在存在的表头插入数据,不存在这个表,就不会插入数据了。
lpushx mylist x
rpushx mylist2 x
删除命令
自动遍历数据,然后从头开始删除,规定个数的数据
lrem mylist3 2 3 从头删除2个3数据
从尾往上删除
rrem mylist3 -2 1 从后往前删除两个1
插入元素
lset mylist 3 aaa 在第三个元素前添加‘aaa’
在元素前插入数据
创建数据:
lpush mylist4 a b c
lpush mylist4 a b c
在b前插入数据
linsert mylist4 before b 11
在b后插入数据
linsert mylist4 after b 22

尾部元素砍出,并添加到头部
创建数据
lpush mylist5 1 2 3
lpush mylist6 a b c
数据处理
rpoplpush mylist5 mylist6
应用在消息队列当操作中。

时间: 2024-10-07 14:21:27

Redis数据结构(四)的相关文章

REdis数据结构服务器

Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章: 1.Redis简介  Redis是一个key-value存储系统.和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表).sets(集合)和zsets(有序集合)几种数据类型.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的. 2.Redis的

Redis数据结构之intset

本文及后续文章,Redis版本均是v3.2.8 上篇文章<Redis数据结构之robj>,我们说到redis object数据结构,其有5中数据类型:OBJ_STRING,OBJ_LIST, OBJ_SET,OBJ_ZSET,OBJ_HASH.集合对象set有着广泛的实际业务应用场景,它包含的元素无序并且不能重复及集合间的交.并.差等基础的操作.本篇就来说说Redis暴露给我们使用的set集合对象的底层实现-intset. 其实,可以理解为有序整型集合 intset是一个由整数组成的有序集合,

Redis 数据结构使用场景

Redis 数据结构使用场景 redis共有5种数据结构,每种的使用场景都是什么? 一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢? String——字符串 Hash——字典 List——列表 Set——集合 Sorted Set——有序集合 下面我们就来简单说明一下它们各自

浅谈算法和数据结构: 四 快速排序

原文:浅谈算法和数据结构: 四 快速排序 上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort). 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序. 快速排序也是一种采用分治法解决问题的一个典型应用.在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序.而且快速排序在面试中经常会遇到. 本文首先介绍快速排序的思

Redis数据结构详解,五种数据结构分分钟掌握

redis数据类型分为:字符串类型.散列类型.列表类型.集合类型.有序集合类型.redis这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作.原子操作:最小的操作单位,不能继续拆分.即最小的执行单位,不会被其他命令插入.高并发下不存在竞态条件.KEY的命名:一个良好的建议是article:1:title来存储ID为1的文章的标题.一.前言.1.获取key的列表:KEYS pattern 通配符有?*[]和转义\2.key是否存在: EXISTS key 存在返回1,不

Redis数据结构之robj

本文及后续文章,Redis版本均是v3.2.8 我们知道一个database内的这个映射关系是用一个dict来维护的.dict的key固定用一种数据结构来表达,这这数据结构就是动态字符串sds.而value则比较复杂,为了在同一个dict内能够存储不同类型的value,这就需要一个通用的数据结构.针对不同的使用场景,这个通用的数据结构可以使用不同的数据结构实现,这样可以优化在不同场景下的效率.这个通用的数据结构就是robj(redisObject),也是本文主要探讨的redis中的对象是怎么实现

Redis 数据结构之dict(2)

本文及后续文章,Redis版本均是v3.2.8 上篇文章<Redis 数据结构之dict>,我们对dict的结构有了大致的印象.此篇文章对dict是如何维护数据结构的做个详细的理解. 老规矩还是打开Redis的源码,文件dict.c 一.dict数据结构的维护 1.dictCreate - 创建一个新的哈希表 /* Reset a hash table already initialized with ht_init(). * NOTE: This function should only b

读REDIS数据结构

一.DICT 主要有两个问题: 1.散列冲突,解决办法是拉链法 typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; } v; struct dictEntry *next; } dictEntry; next字段向后拉链 2.扩容时候的rehash,做类似于copy on write typedef struct dict { dictType *type; void *privd

Redis 数据结构与内存管理策略(下)

Redis 数据结构与内存管理策略(下) Redis 数据类型特点与使用场景 String.List.Hash.Set.Zset 案例:沪江团购系统大促 hot-top 接口 cache 设计 Redis 内存数据结构与编码 OBJECT encoding key.DEBUG OBJECT key 简单动态字符串(simple dynamic string) 链表(linked list) 字典(dict) 跳表(skip list) 整数集合(int set) 压缩表(zip list) Re

redis学习(二) redis数据结构介绍以及常用命令

redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: 1.string 字符串 string字符串类型是redis最基础的数据存储类型.string是最基础的一种数据类型,其可以拓展为某种特定类型,例如普通文本,json字符串,二进制数据等等.就本质上来说,接下来要介绍的hash,list,set等其内部最基础的组成单位依然是string,只不过re