美文网首页
第二章:API 的理解和使用-预备知识

第二章:API 的理解和使用-预备知识

作者: super_pcm | 来源:发表于2019-07-29 10:29 被阅读0次

    2. API的理解和使用

    本章内容介绍三个内容,分别为预备知识;5种的数据结构以及键管理、数据库管理。

    2.1 预备知识

    2.1.1 几个简单的全局命令

    命令 用途 备注
    keys * 查看所有键 生产环境下慎用,容易引起阻塞
    dbsize 键总数 返回的而是一个整数
    exists key 检查键是否存在 存在返回1,不存在返回0
    del key [key ...] 删除键 del是通用命令,可以删除任意的数据结构的数据
    expire key seconds 键过期 可以用ttl命令返回剩余过期时间
    type key 键的数据结构类型 返回键的数据结构类型

    2.1.2 数据结构和内部编码

    type命令实际返回的就是当前键的数据结构类型,它们分别是:
    string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集
    合),但这些只是Redis对外的数据结构。实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合适的内部编码。
    如果要做深层次的Redis性能调优的话,Redis数据结构的内部编码需要深入研究,可能一个轻微的调整会带来巨大的内存收益。
    查看内部编码的命令为 object encoding,这里我就不把书上的内容写下来了,只要知道不同数据长度,Redis会选择不同的编码来实现数据结构,下图是书本的内部编码图。


    Redis数据结构和内部编码

    2.1.3 单线程架构

    Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务,至于为什么单线程的效率还可以这么高,可以看我转载的一遍关于epoll的文章(点我).
    Redis客户端和服务端的通信模型,如下图所示:

    Redis客户端与服务端请求过程
    通常我们说的单线程模型是指第2步的执行命令那里,只有一个线程,不会存在多个命令同时被执行的情况,简化了很多开发上并发性的难题。但是这也注定了Redis不适合处理命令执行时间长的场景,这样会对其他的命令造成阻塞,这也是上面说的慎用keys *的原因。

    相关文章

      网友评论

          本文标题:第二章:API 的理解和使用-预备知识

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