美文网首页
redis 数据类型总结

redis 数据类型总结

作者: 编程人生 | 来源:发表于2021-10-17 17:20 被阅读0次

    redis  --<<REmote Dictionary Service>>  名称含义  :远程字典服务

    1.关系数据库和非关系型数据库的对比

    关系型数据库特点

    1.基于行存储数据, 二维的模式

    2.存储机构结构化数据, 数据存储有固定的模式schema

    3.表与表之间存在关联Relationship

    4.大都支持SQl,结构化查询语言的操作, 支持复杂的关联查询

    5.通过支持事务ACID酸来提供严格或者实时的数据一致性

    关系型数据库的不足

    1.要实现扩容的话, 只能向上(垂直)扩展, 不支持动态的扩缩容

    2.表结构修改困难,因此存储的数据格式也收到限制

    3.高并发情况下, 基于磁盘的读写压力比较大

    非关系型数据库特点(non-relational NoSQL)

    1.存储非结构化的数据, 比如文本  图片  音频 视频

    2.表与表之间没有关联,可扩展行强

    3.保证数据的最终一致性, 遵循BASE碱理论

    4.支持海量数据的存储和高并发的高效读写

    5.支持分布式,能够对数据进行分片存储,扩缩容简单

    hostingdata.co.uk/nosql-database/ 非关系型数据库网站,举例如下:

    1.KV存储: Redis 和 Memcached

    2.文档存储: MongoDB

    3.列存储: HBase

    4.图存储:Neo4j

    5.对象存储

    6.XML存储

    7........

    有句话说的好: 小孩子才做选择...... 大人全都要

    Redis 基本特性

    速度快

    支持多种数据类型

    支持多种编程语言

    持久化,内存淘汰

    功能丰富: 事物 发布订阅 pipeline  lua

    集群分布式

    Redis一主二从Sentinel 监控配置

    https://gper.club/articles/7e7e7f7ff3g5bgccg68

    redis 切换库的命令 :  进入客户端  select 1

    flushdb

    flushall

    Redis  增删改查

    set qingshan2673(增 改)

    get qingshan(查)

    keys*

    dbsize

    exits qingshan

    del qingshan huihui

    rename qingshan pengyuyan

    type qingshan

    分析维度

    1.存储类型

    2.操作命令

    3.存储原理(底层编码)

    4.应用场景

    String 存储类型

    1.INT 整型

    2.Float单精度浮点型

    3.String字符串

    String -操作命令

    getrange qingshan 0 1

    strlen qingshan

    append qingshan good

    setnx qingshan pyy

    mset qingshan 2673 huihui 666

    mget qingshan huihui

    incr qingshan

    incrby qingshan 100

    decr qinshan

    decrby qinshan 100

    set mf 2.6

    incrbyfloat mf 7.3

    String 的三种编码

    1.int, 存储8个字节的长整型(long , 2^63-1)

    2.embstr, embstr 格式的SDS, 存储小于44个字节的字符串

    3.raw, SDS , 存储大于44个字节的字符串

    SDS是什么?(Simple Dynamic String)

    sdshr5: 2^5 = 32byte (不用)

    sdshr8: 2^8 = 256byte

    sdshr16: 2^16 = 65536byte= 64KB

    sdshr32: 2^32 = 4GB

    Redis 为什么要用SDS,要自己实现一个字符串数组?

    String类型可以干什么?

    1.缓存

    2.分布式Session

    3.分布式set NX EX

    4.分布式全局ID incr

    5.计数器incr

    6.限流 incr

    7.位操作

    可不可以一次存储多条字符串信息?

    mset  和 mget 命令可以实现一次存/取多条数据.

    Hash 哈希

    存储多个无序的键值对,最大存储量2^ 32-1(40亿左右)

    2.Hash特点:

    1.节省内存空间

    2.减少key冲突

    3.取值减少性能消耗

    Hash不适合的场景:

    1.Field不能单独设置过期时间

    2.需要考虑数量分布的问题.

    Hash-存储结构

    ziplist:OBJ_ENCODING_ZIPLIST(压缩列表)

    hashtable: OBJ_ENCODING_HT(哈希表)

    List列表(有序)

    存储有序的字符串(从左到右), 元素可以重复.

    最大存储量2^32-1(40亿左右)

    常用操作命令

    lpush queue a

    lpush queue b c

    rpush queue d e

    lpop  queue

    rpop  queue

    lindex queue 0

    lrang queue 0 -1

    List 存储原理(quicklist): 底层数组加链表的结构

    set集合

    Set存储String类型的无序集合

    最大存储量为2^32-1(40亿左右)

    set-存储结构

    1.intset

    2.hashtable

    1.抽奖: spop mysset

    2.点赞 / 抽奖 打卡

    3.商品标签

    set1{a,b,c} set{b,c,d}

    获取差集

    sdiff set1 set2 {a,d}

    获取交集(intersection)

    sinter set1 set2 {b,c}

    获取并集

    sunion set1 set2 {a,b,c,d}

    zset 有序集合

    zset-存储结构 ziplist(元素数量<128,所有元素长度小于64bytes) zkiplist+dict zkiplist 跳表 使用场景: 排行榜

    其他的数据机构

    BItmap(String) 位图 

    Geospatial  存的地址信息

    Hyperloglogs

    Streams

    相关文章

      网友评论

          本文标题:redis 数据类型总结

          本文链接:https://www.haomeiwen.com/subject/mfyjoltx.html