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是单线程的,同一时间只能执行一个命令。
那为什么单线程还能这么快?
- 纯内存
- 非阻塞IO,使用IO多路复用
- 避免线程切换和竞态消耗
所以在使用的时候,要避免慢命令,会影响之后的命令执行。
三、数据结构和内部编码
数据结构是对外的,内部编码是对内的实现。
redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type表示一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式。
1.字符串
所有的key都是字符串类型的,value有五种数据类型。
字符串类型常用于:缓存、计数器、分布式锁……
字符串中也可以存数值,所以可以进行自增(incr)、自减(decr)操作。