首页 > 数据库 >《Redis DevOps》二:API的理解和使用

《Redis DevOps》二:API的理解和使用

时间:2022-12-13 23:35:32浏览次数:59  
标签:编码 场景 max ziplist Redis DevOps API entries 512

概述

  1. 数据结构与内部编码


    优点:
    1)改进内部编码时,对外数据结构与命令无影响
    2)多种内部编码适配不同使用场景

  2. 单线程架构
    单线程访问快速的原因:
    1)纯内存访问
    2)非阻塞IO,epoll的I/O多路复用技术
    3)避免了线程切换和竞态的消耗

5种数据结构

字符串string

  1. 命令
    get/set/del/mset/mget/incr/decr/incrby/decrby/incrbyfloat/append/strlen/setrange/getrange
  2. 内部编码
    1. int: 8字节的长整型
    2. embstr: 长度小于等于39的字符串
    3. raw: 长度大于39的字符串
  3. 典型应用场景
    1. 缓存
    2. 计数
    3. 共享session
    4. 限速

哈希hash

  1. 命令

    hset/hget/hdel/hlen/hgetall/hmget/hmset/hexists/hkeys/hvals/hsetnx/hincrby/hincrbyfloat/hstrlen

  2. 内部编码

    1. ziplist: hash-max-ziplist-entries 512,hash-max-ziplist-value 64B,更为节约内存
    2. hashtable: 对比ziplist读写效率下降,复杂度O(1)
  3. 典型应用场景

    1. 存储结构性数据

列表list(有序、可重复)

  1. 命令

    lpush/rpush/linsert/{lrange lindex llen}/{lpop rpop lrem ltrim}/lset/{blpop brpop}

  2. 内部编码

    1. ziplist: list-max-ziplist-entries 512,list-max-ziplist-value 64B,更为节约内存
    2. linkedlist
  3. 典型应用场景

    1. 消息队列:lpush + brpop
    2. 文章列表

集合set(无序、不重复)

  1. 命令
    1. 集合内:sadd/srem/scard/sismember/spop/smembers
    2. 集合间:sinter/sunion/sdiff/{sinterstore sunionstore sdiffstore}
  2. 内部编码
    1. intset: set-max-intset-entries 512,整数
    2. hashtable
  3. 典型应用场景
    1. 标签,sadd -> Tagging, spop/srandmember 抽奖,sdiff + dinter 社交网络

有序集合(有序、不重复)

  1. 命令
    1. 集合内:zadd/zcard/zscore/{zrank zrevrank}/zrem/zincrby/{zrange zrevrange}/{zrangebyscore zrevrangebyscore}/zcount/zremrangebyrank/zremrangebyscore
    2. 集合间: zinterstore/zunionstore
  2. 内部编码
    1. ziplist: zset-max-ziplist-entries 512,zset-max-ziplist-value 64B,更为节约内存
    2. skiplist: 读写效率下降
  3. 典型应用场景
    1. 排行榜系统

标签:编码,场景,max,ziplist,Redis,DevOps,API,entries,512
From: https://www.cnblogs.com/shirley-bhu/p/16980977.html

相关文章

  • 《Redis DevOps》一:初识Redis
    初识Redis简介Redis(REmoteDictionaryServer)是一种基于键值对的NoSQL数据库,主要有string/hash/list/set/zset5种基本数据结构,字符串演变出bitmaps位图和HyperLogLog,3.2......
  • HarmonyOS实现登录页面(四)相关api的测试+内网穿透(Postman, NATAPP)
    Postman对应结果NATAPP内网穿透NATAPP下载地址NATAPP新手教程不要添加多余空格NATAPP设置变量如何查询本地tomcat端口http的默认端口是80,也就copy是说,如......
  • 使用 WebAPI获取实体的复数名称
    Xrm.Utility.getEntityMetadata("opportunity","").then(function(result){console.log("当前实体的复数名称:"+result.EntitySetName);},functio......
  • webapi excel导入
     效果图  引入命名空间:usingNPOI;usingNPOI.HSSF.UserModel;usingNPOI.SS.UserModel;usingNPOI.XSSF;usingNPOI.XSSF.UserModel;usingXiaowu_Ship.Model;//......
  • opcenter api调试小工具
    此工具只能用于opcenter8,主要用于做opcenterapi的调试。前端库:Element Plus  Vue3  Axios实现功能:1.opcenterAPI调试2.opcenter 日志的打开关闭部署方式:1.......
  • SpringDataRedis事务 专题
    5.10.1.@TransactionalSupportTransactionSupportisdisabledbydefaultandhastobeexplicitlyenabledforeachRedisTemplateinusebysettingsetEnableTran......
  • 【Web开发】Python实现Web服务器(FastAPI)
    文章目录​​1、简介​​​​2、安装​​​​3、官方示例​​​​3.1入门示例​​​​3.2跨域CORS​​​​3.3文件操作​​​​3.4WebSocket​​​​结语​​1、简介Fas......
  • Java类和对象2-API,String,ArrayList
    Java类和对象2-API,String,ArrayList如何使用帮助文档(API)先看这个类在哪个包里.看这个类的描述信息,知道这个类是干啥的.看构造方法.最后看成员方法,就是返回值,......
  • API 设计: RAML、Swagger、Blueprint三者的比较
    API设计工具中常常会拿RAML、Swagger、Blueprint这三种工具进行讨论比较,它们都是用来描述和辅助API开发的,只是它们之间的侧重有所不同。RAMLRAML(RESTfulAPIModelingLang......
  • .net core分布式锁的实现(基于redis)
    一、单个redis节点实现原理:核心采用StackExchange.Redis的LockTake方法实现。支持同步获取锁,或者等待直到超时获取锁。参照:.netcore下的分布式事务锁(qq.com)(9条消......