• Redis数据结构详解


    Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。

    Redis是一个速度非常快的非关系型数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

    非关系型数据库

    关系型数据库经常用来写关联两个表的数据的SQL查询,而Redis则属于人们常说的NoSQL数据库或者非关系数据库:Redis不使用表,它的数据库也不会预定义或者强制要求用户对Redis存储的不同数据进行关联。

    附加特性

    内存数据库,一个首要考虑的问题就是:当服务器关闭时,服务器存储的数据何去何从?

    Redis拥有两种不同形式的持久化方法,它们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘:

    • 时间点转储(point-in-time-dump)
    • 写入只追加(append-only)文件里面

    扩展Redis的读性能,并为Redis提供故障转移(failover)支持,Redis实现了主从复制特性:执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本(copy);之后主服务器执行的写命令,都会被发送给所有连接着的从服务器去执行,从而实时地更新从服务器地数据集。因此客户端可以向任意一个从服务器发送读请求,以此来避免对主服务器进行集中式的访问。

    Redis数据结构简介

    Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为:

    • STRING(字符串)
    • LIST(列表)
    • SET(集合)
    • HASH(散列)
    • ZSET(有序集合)
    结构类型结构存储的值结构的读写能力
    STRING可以是字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作;对整数和浮点数执行自增(increment)或者自减(decrement)操作
    LIST一个链表,链表上的每个节点都包含了一个字符串从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单个或者多个元素;根据值查找或者移除元素
    SET包含字符串的无序收集器(unordered collection),并且被包含的每个字符串都是独一无二、各不相同的添加,获取,移除单个元素;检查一个元素是否存在于集合中;计算交集,并集,差集;从集合里随机获取元素
    HASH包含键值对的无序散列表添加、获取、移除单个键值对;获取所有键值对
    ZSET字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定添加、获取、删除单个元素;根据分值范围(range)或者成员来获取元素

    Redis中的字符串

    字符串常用命令:

    • GET:获取存储在给定键中的值
    • SET:设置存储在给定键中的值
    • DEL:删除存储在给定键中的值(这个命令可以用于所有类型)

    image

    使用redis-cli:启动redis-cli客户端。

    Redis中的列表

    Redis对链表(linked-list)结构的支持使得它在键值存储的世界中独树一帜。一个列表结构可以有序地存储多个字符串

    列表常用命令:

    • RPUSH:将给定值推入列表地右端
    • LPUSH:将给定值推入列表地左端
    • LRANGE:获取列表在给定范围上的所有值
    • LINDEX:获取列表在给定位置上的单个元素
    • LPOP:从列表的右端弹出一个值,并返回被弹出的值
    • LPOP:从列表的左端弹出一个值,并返回被弹出的值

    image

    Redis的集合

  • 相关阅读:
    Python 编程基础 | 第五章-类与对象 | 5.2、数据成员
    【yarn】CDP集群 Yarn配置capacity调度器批量分配
    Spring Framework IOC入门案例&DI入门案例分析(Xml版)
    数据结构--线性表
    Exception-Error
    Go的全新漏洞检测工具govulncheck来了
    Lumiprobe 活性染料丨杂染料:BDP FL 神经酰胺
    在win10上安装pytorch-gpu版本2
    vivado流程导航器详细介绍【全网最详细】
    WinForm应用实战开发指南 - 教你如何实现表头的全选操作?
  • 原文地址:https://blog.csdn.net/wozaibohaibian/article/details/126203680