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

2019-07-29  本文已影响0人  super_pcm

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 *的原因。
上一篇 下一篇

猜你喜欢

热点阅读