Redis01——Redis究竟支持哪些数据结构
Redis已经越来越多地应用到互联网技术中,而关于Redis的相关问题,也成为面试中必不可少的一部分,本文开始将会逐渐把我了解到的关于Redis的一些面试问题整理出来,供各位参考,如有不对之处,烦请指正。
简介
Redis共支持五种数据结构,分别是string(字符串)、hash(字典)、list(列表)、set(集合)、zset(有序集合)。
详解
string(字符串)
数据结构:Redis中string数据结构为动态字符数组,采用预分配冗余空间的方式来减少内存分配。
扩容机制:当字符串长度小于1MB时,扩容都是加倍现有空间。当字符串长度大于1MB时,每次扩容1MB,最大长度为512MB。
计数:当值为整数时,可以进行自增操作。范围为signed long 的最大值和最小值之间。
hash(字典)
数据结构:Redis中list相当于Java的HashMap。
渐进式rehash:在Redis中针对hash冲突采用的是渐进式rehash操作。渐进式rehash会同时保留新旧两个hash结构,查询时同时查询两个hash结构。在后续的定时任务及hash操作的过程中完成从旧hash结构,迁移到新hash结构的过程。
list(列表)
数据结构:Redis中list相当于Java的LinkedList,所以写操作时间复杂度为O(1),读操作时间复杂度为O(n)。
set(集合)
数据结构:Redis中set相当于Java的HashSet。
zset(有序集合)
数据结构:Redis中zset类似于一个带权值(score)的SortedSet。其内部通过跳跃列表(关于跳跃列表,将会在后期的文章中进行分享)实现。
总结
1.通用规则
hash、list、set、zset这四种数据结构为容器型数据结构,所有容器型数据结构遵守以下规则:
create if not exists:当容器不存在时,需先创建一个容器,再进行操作;
drop if not elements:当容器内无元素时,会立即删除容器,释放内存。
2.过期时间
过期时间以对象为单位,如整个hash结构。
当string被set方法修改后,过期时间将会失效。
Redis01——Redis究竟支持哪些数据结构的更多相关文章
- Redis所支持的数据结构
1.启动Redis2.Redis所支持的数据结构 2.1.Redis常用操作 2.2.String类型及操作 2.3.Hash类型及操作 2.4.List类型及操作 2.5.Set类型及操作 2.6. ...
- SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...
- Redis中5种数据结构的使用场景介绍
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/108.html?1455861435 一.redis 数据结构使用场景 原 ...
- redis中5种数据结构的使用
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- Redis 的几种数据结构&五种数据类型对象
先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计 1,简单动态字符串 redis使用的字符串SDS有别于C语言中的字符串 a, 结构 free字段为已分配但未使用的空间 len为已 ...
- Redis中的基本数据结构
Redis基础数据结构 基础数据结构 sds简单动态字符串 数据结构 typedef struct sdstr{ int len // 字符串分配的字节 int free // 未使用的字节数 cha ...
- Redis 概念以及底层数据结构
Redis 简介 REmote DIctionary Server(Redis) 是一个由SalvatoreSanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C ...
- Redis中5种数据结构的使用场景
一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 ...
- Redis 中 5 种数据结构的使用场景介绍
这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String.Hash.List.Set.Sorted Set做了讲解,需要的朋友可以参考下 一.redis ...
随机推荐
- CMOS
CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写.它是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上 ...
- 使用jxl操作之一: 实现对Excel简单读写操作
项目目录树 对象类UserObject UserObject.java package com.dlab.jxl; public class UserObject { private String u ...
- “冰桶挑战”之外:微软科技助力ALS患者
编者按:"直到ALS出现治疗方法,科技就是我的解药."ALS患者,前美国橄榄球联盟(NFL)球员Steve Gleason如是说.最近,一支微软首届黑客马拉松(Hackathon) ...
- ionic2踩坑之自定义插件开发及调用
关于ionic2自定义插件开发的文章,插件怎么调用的文章,好像网上都有,不过作为一个新手来说,从插件的开发到某个页面怎么调用,没有一个完整的过程的话,两篇没有关联的文章也容易看的迷糊.这里放到一起来方 ...
- CentOS7下MySQL5.7的安装-RPM方式
Installing MySQL on Linux Using RPM Packages 下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ ...
- 在Docker内安装jenkins运行和基础配置
这里是在linux环境下安装docker之后,在doucer内安装jenkins --------------------docker 安装 jenkins---------------------- ...
- 吴裕雄--天生自然KITTEN编程:画三角形
- 关于利用glassfish部署Java EE的firstcup-war时报错
在利用maven+glassfish打包部署Java EE的firstcup-war时报错 1.在利用glassfish部署firstcup-war.war文件时提示如下错误信息: 根据上面的错误提示 ...
- 【转载】Scrapy安装及demo测试笔记
Scrapy安装及demo测试笔记 原创 2016年09月01日 16:34:00 标签: scrapy / python Scrapy安装及demo测试笔记 一.环境搭建 1. 安装scrapy ...
- Appium移动自动化框架功能概括
小编说:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API 来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>,了 ...