`

浅谈redis数据结构

阅读更多

1. redis安装

       正式的redis是安装在linux操作系统上的,但是考虑到很多小伙伴对windows是比较熟悉的。因此,redis windows安装的版本如下:https://github.com/MicrosoftArchive/redis/releases。从这个github上选择对应的release版本,比如,我这里安装的是3.0.504,下载msi或zip都可以,如下图所示:

 

       我这里选择的是msi,后面的安装就不在累述。本地安装好以后,打开redis的安装路径,例如:我本地安装在D:\Program Files\Redis,如下图所示:

 

       如图中标出来的两个exe文件:redis-server.exe和redis-cli.exe,分别是redis的服务端和redis的客户端。

下面我们启动redis服务,这里启动redis服务的方式有很多种,篇幅所限,我这里就介绍下,利用git客户端,启动redis服务,如下图所示:

 

       redis服务启动成功后,我们再启动redis客户端,如下图所示:

 

2. 数据结构

       熟悉redis的小伙伴都知道,redis存储的整体结构是(K,V)结构,即键-值结构。对于键(K),有一些通用的全局命令,这里只做几个简单的说明:

命令 描述
keys * 查看所有键
dbsize 键总数
exists key 检查键是否存在
del key 删除键
expire key seconds 键过期
type key 键的数据结构类型

 

对于值(V),redis中有五种数据结构。这五种数据结构分别是:

数据结构 描述
string 字符串
hash 哈希
list 列表
set 集合
zset 有序集合

 

这种键-值结构,只是redis对外的数据结构,如下图所示:

 

       这种对外的数据结构,其中每种数据结构实际上都有自己底层的内部编码实现,而且是多种实现。这样Redis会在合适的 场景 选择合适的 内部编码,如下图所示:

 

       可以看到,每种数据结构都有两种以上的内部编码实现。例如:list数据结构包含了linkedlist和ziplist两种内部编码。同时有些内部编码,例如:ziplist,可以作为多种外部数据结构的内部实现,可以通过object encoding命令查询内部编码,如下图所示:

       

        Redis这样设计有两点好处,其一:可以改进内部编码,而对外的数据结构和命令没有影响。例如:Redis3.2提供的quicklist,结合了ziplist和linkedlist 两者的优势,为列表类型提供了一种更加高效的内部编码实现;其二:不同内部编码可以在不同场景下发挥各自的优势。例如:ziplist比较节省内存,但是在列表元素比较多的情况下,性能会有所下降,这时候Redis会根据配置,将列表类型的内部实现转换为linkedlist。

 

3. 后续

       由于篇幅限制,后续的文章中,会分别对redis的五种数据结构分别做研究。关于字符串数据结构的,请阅读:浅谈redis数据结构之字符串

分享到:
评论

相关推荐

    redis数据结构服务器

    它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于...

    go&redis数据结构的底层实现.docx

    go&redis数据结构的底层实现.docx

    Redis数据结构.pptx

    针对Redis的高级数据结构PPT。该PPT一共14页,介绍了Zset的数据结构类型,以及跳表的数据结构。简单阐述了BitMap,HLL,Bloom Filter的原理以及一些常用的指令。针对Bloom Filter有一些自己的见解以及分析

    redis数据结构

    自己整理的redis自定义的数据结构,对理解redis运行的内部原理会有所帮助

    Redis数据结构与对象总结

    Redis数据结构与对象总结 数据结构与对象 简单动态字符串 SDS简介 SDS与C字符串的区别 常数复杂度获取字符串长度 O(n) O(1) 杜绝缓冲区溢出 修改字符串长度时内存重分配 空间预分配:对字符串进行增长操作时...

    01-Redis核心数据结构实战与高性能原理剖析-ev.rar

    01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心...

    01-VIP-Redis核心数据结构与核心原理1

    Nginx也是采用IO多路复用原理解决C10K问题# 查看redis支持的最大连接数,在redis.conf文件中可修改,# maxclients 10000其

    十五分钟介绍-Redis数据结构.pdf

    十五分钟介绍-Redis数据结构

    数据结构Redis中数据类型对应的数据结构.pdf

    数据结构 数据结构Redis中数据类型对应的数据结构 中数据类型对应的数据结构 Redis Redis 是⼀种键值(Key-Value)数据库。相对于关系型数据库(⽐如 MySQL),Redis 也被叫作⾮关系型数据库。 像 MySQL 这样的关系...

    Redis基础数据结构.pptx

    详细分析redis设计及实现原理 详细分析redis设计及实现原理

    redis数据结构.pdf

    Redis数据结构和操作 redis不只是一个简单的键(key)-值(value)数据库,实际上它是一个数 据结构服务器,支持各种类型的值。也就是说,在传统的键-值数据库 中,你把字符串键与字符串值联系起来,而在redis,值不仅...

    redis数据结构基础知识及案列(每个数据结构一个案例).zip

    redis数据结构基础知识及案列(每个数据结构一个案例)

    redis2json:以JSON格式导出Redis数据

    用途您可以通过gzip通过管道传输输出并将其发送到文件,以进行快速的非redis数据备份或导出/迁移到另一个系统。 例如: ./redis_to_json.py | gzip > redis_backup.json.gz这对于您正在使用但又不想丢失数据的应用...

    Redis 数据结构1

    Redis
底层网络模型为单线程+epoll,也就是说,发送至
Redis
的命令是执的若采用直接扩容的方式,那么当遇到巨大的哈希表时,数据的复制将花费很长时间

    redis基础数据结构讲解

    本文主要介绍redis的几种数据类型和适用场景。会列出简单例子,具体的redis函数不会一一介绍。不过这些简单的例子基本上满足80%以上的项目。

    浅谈redis的maxmemory设置以及淘汰策略

    redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。 关于redis的淘汰策略: Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为...

    Redis数据导入导出以及数据迁移的4种方法详解

    主要介绍了Redis数据导入导出以及数据迁移的4种方法详解,需要的朋友可以参考下

    详解redis数据结构之sds

    详解redis数据结构之sds  字符串在redis中使用非常广泛,在redis中,所有的数据都保存在字典(Map)中,而字典的键就是字符串类型,并且对于很大一部分字典值数据也是又字符串组成的。以下是sds的具体存储结构: ...

    redis五大数据结构操作指令详细说明

    有关redis五大数据结构的操作指令说明,数据的增删改查等

Global site tag (gtag.js) - Google Analytics