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数据结构之字符串
相关推荐
它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于...
go&redis数据结构的底层实现.docx
针对Redis的高级数据结构PPT。该PPT一共14页,介绍了Zset的数据结构类型,以及跳表的数据结构。简单阐述了BitMap,HLL,Bloom Filter的原理以及一些常用的指令。针对Bloom Filter有一些自己的见解以及分析
自己整理的redis自定义的数据结构,对理解redis运行的内部原理会有所帮助
Redis数据结构与对象总结 数据结构与对象 简单动态字符串 SDS简介 SDS与C字符串的区别 常数复杂度获取字符串长度 O(n) O(1) 杜绝缓冲区溢出 修改字符串长度时内存重分配 空间预分配:对字符串进行增长操作时...
01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心数据结构实战与高性能原理剖析_ev.rar01-Redis核心...
Nginx也是采用IO多路复用原理解决C10K问题# 查看redis支持的最大连接数,在redis.conf文件中可修改,# maxclients 10000其
十五分钟介绍-Redis数据结构
数据结构 数据结构Redis中数据类型对应的数据结构 中数据类型对应的数据结构 Redis Redis 是⼀种键值(Key-Value)数据库。相对于关系型数据库(⽐如 MySQL),Redis 也被叫作⾮关系型数据库。 像 MySQL 这样的关系...
详细分析redis设计及实现原理 详细分析redis设计及实现原理
Redis数据结构和操作 redis不只是一个简单的键(key)-值(value)数据库,实际上它是一个数 据结构服务器,支持各种类型的值。也就是说,在传统的键-值数据库 中,你把字符串键与字符串值联系起来,而在redis,值不仅...
redis数据结构基础知识及案列(每个数据结构一个案例)
用途您可以通过gzip通过管道传输输出并将其发送到文件,以进行快速的非redis数据备份或导出/迁移到另一个系统。 例如: ./redis_to_json.py | gzip > redis_backup.json.gz这对于您正在使用但又不想丢失数据的应用...
Redis 底层网络模型为单线程+epoll,也就是说,发送至 Redis 的命令是执的若采用直接扩容的方式,那么当遇到巨大的哈希表时,数据的复制将花费很长时间
本文主要介绍redis的几种数据类型和适用场景。会列出简单例子,具体的redis函数不会一一介绍。不过这些简单的例子基本上满足80%以上的项目。
redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。 关于redis的淘汰策略: Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为...
主要介绍了Redis数据导入导出以及数据迁移的4种方法详解,需要的朋友可以参考下
详解redis数据结构之sds 字符串在redis中使用非常广泛,在redis中,所有的数据都保存在字典(Map)中,而字典的键就是字符串类型,并且对于很大一部分字典值数据也是又字符串组成的。以下是sds的具体存储结构: ...
有关redis五大数据结构的操作指令说明,数据的增删改查等