美文网首页
Redis-API-全局变量

Redis-API-全局变量

作者: 苏近之2017 | 来源:发表于2017-06-06 16:41 被阅读0次

全局命令

Redis 有 5 种数据结构,它们是键值对中的值,对于键来说有一些通用的命令。

查看所有的键

keys *
image

键的总数

dbsize
image

使用dbsize会获取 Reids 内置的键总数变量,而 keys 命令会遍历所有键。所以,当 Redis 保存了大量键时,线上环境禁止使用。

检查键是否存在

exists key

删除键

del key [key ...]
image

键过期

expire key seconds
image

该命令会返回 3 种可能的值:

  • 大于 0 的整数,表示键剩余的过期时间
  • -1, 表示键没有设置过期时间
  • -2, 表示键不存在

也可以通过ttl命令来查看键的剩余时间。

键的数据结构类型

type key
image

数据结构和内部编码

每种数据结构都有自己底层的内部编码实现,而且是多种实现,在合适的场景下使用合适的内部编码。

查看内部编码

object encoding
image

这种设计的好处有两个:

  • 可以改进内部编码,且不影响用户的使用。
  • 多种内部编码可以适用于多种场合,充分利用不同编码的不同特性。

单线程架构

Redis 使用了单线程架构和 I/O 多路复用模型来实现高性能的内存数据库服务。

每一条从客户端到服务器的命令都会被加入队列,之后轮询执行。也就说,同一时刻,不会有两条命令执行。

同时,因为一下原因,所以这样单线程也能十分高效:

  • 纯内存访问

    内存的响应时间大约为100纳秒,这是 Redis 达到每秒万级别访问的重要基础。

  • 非阻塞 I/O

    Redis 使用 epoll 作为 I/O 多路复用技术的实现,再加上 Redis 自身的事件处理模型将 epoll 中的链接、读写、关闭都转换为事件,不在网络 I/O 上浪费太多的时间。

  • 单线程避免了线程切换和竞态产生的消耗

但是单线程会产生一个问题:对于每个命令的执行时间是有要求的。如果某个命令执行过长,会造成其他命令的阻塞。

相关文章

  • Redis-API-全局变量

    全局命令 Redis 有 5 种数据结构,它们是键值对中的值,对于键来说有一些通用的命令。 查看所有的键 键的总数...

  • Redis-API-哈希

    哈希,也叫作字典或关联数组,指的是健值本身又是一个键值对结构。伪代码如下: 命令 设置值 获取值 删除字段 计算个...

  • redis-API-列表

    文档地址 列表类型有两个特点: 第一、列表中的元素是有序的,这就意味着可以通过索引下标获取某个元素或者某个范围内的...

  • redis-API-集合

    文档地址 内部编码 intset(整数集合): 当集合中的元素都是整数且元素个数小于set-maxintset-e...

  • redis-API-哈希

    文档地址 内部编码 ziplist(压缩列表) hashtable(哈希表) 编码的选择 内部编码默认是zipli...

  • redis-API-有序集合

    内部编码 ziplist(压缩列表): 当有序集合的元素个数小于zset-max-ziplistentries配置...

  • redis-API-全局命令

    单线程架构 纯内存 非阻塞i/o 单线程避免了线程切换和竟态产生的消耗 概要: 使用多路复用技术 全局命令 查看所...

  • Objective-C中static、const和extern关

    一 static 1,修饰全局变量 在全局变量前加static,全局变量就被定义成为一个静态全局变量(全局变量和静...

  • python函数

    函数 全局变量 获取全局变量python获取全局变量直接获取 修改全局变量python不允许直接修改全局变量如果要...

  • 【C语言笔记】<二十一>内部全局变量和外部全局变量

    全局变量分为两种: 1.外部全局变量, 默认情况下所有的全局变量都是外部全局变量什么事外部全局变量? 可以被其它文...

网友评论

      本文标题:Redis-API-全局变量

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