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 ...
随机推荐
- By virtue of|sustain|post |scrape off |stretch|access to|take into account of|exploit|hasten|blur |idle|bored her to|account for|accused of|cruelty
By virtue of this superior quality, this product is often sold out of stockin many areas. 我们的产品因其优秀的 ...
- 安装与使用django-restframework
django-restframework 一.安装与使用 1.安装 >: pip3 install djangorestframework 2.使用 在settings.py中注册: INSTA ...
- 在virtualenv中安装NumPy、 SciPy、 scikit-learn、 matplotlib
首先要进入对应的虚拟环境 然后安装包 这里把安装源改成使用豆瓣的源进行下载 这样的话 下载速度会快很多 安装numpy包 pip install numpy -i https://pypi ...
- ionic3懒加载IonicPage使用报错
ionic3.X版本有不少亮点.作为从angular1到ionic1.ionic2一直用它们开发单页面应用的使用者来说,一直存在的一个痛点就是,将整个项目作为网页不打包成app的话,第一次加载时间太长 ...
- SpringBoot中Shiro使用Pac4j集成CAS认证
SpringBoot中Shiro使用Pac4j集成CAS认证 Pac4j 简介 Pac4j与Shiro,Spring Security一样都是权限框架,并且提供了OAuth - SAML - CAS ...
- Typescript - 联合类型
原文:TypeScript基本知识点整理 零.序言 联合类型表示一个变量值可以是几种类型之一,我们可以使用 “|” 来分割每个类型: 联合类型的变量在被赋值时,会根据类型推断的规则推断出一个类型: 如 ...
- zookeeper伪分布式集群搭建
zookeeper集群搭建注意点: 配置数据文件myid1/2/3对应server.1/2/3 通过zkCli.sh -server [ip]:[port]检测集群是否 ...
- SpringMVC之添加照片并修改照片名字
@RequestMapping(value="/addIdcardsSubmit",method={RequestMethod.POST,RequestMethod.GET}) p ...
- Selenium2自动化——初体验
一.Windows下的环境搭建 1.安装Python 访问Python官网:https://www.python.org/ 2.安装setuptools与pip setuptools是Python e ...
- 利用python代码操作git
python操作git 安装模块 pip3 install gitpython 基本使用 import os from git.repo import Repo # 创建本地路径用来存放远程仓库下载的 ...