Redis API的理解和使用

一、通用命令

  • keys 用于查找所有符合给定模式 pattern 的 key
    keys在生产环境中一般不使用,因为keys会阻塞其他命令。
  • dbsize 返回当前数据库的 key 的数量
  • exists key 用于检查给定 key 是否存在,存在返回1,不存在返回0
  • del 删除一个/多个key
  • expire key seconds 设置key的过期时间
    ttl key 查看key剩余过期时间,persist key 去掉key的过期时间
  • type key 查看key的数据类型

以上除了keys的时间复杂度为O(n),其余时间复杂度都是O(1)。

二、单线程

Redis是单线程的,同一时间只能执行一个命令。

那为什么单线程还能这么快?

  1. 纯内存
  2. 非阻塞IO,使用IO多路复用
  3. 避免线程切换和竞态消耗

所以在使用的时候,要避免慢命令,会影响之后的命令执行。

三、数据结构和内部编码

Redis API的理解和使用
数据结构是对外的,内部编码是对内的实现。
Redis API的理解和使用
redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type表示一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式。

1.字符串

所有的key都是字符串类型的,value有五种数据类型。

字符串类型常用于:缓存、计数器、分布式锁……

字符串中也可以存数值,所以可以进行自增(incr)、自减(decr)操作