一:通用命令
(1)keys:遍历所有key
实例:
mset hello world hehe haha php good phe his
keys he*:通配he开通key
keys je[h-l]*:通配第三个字母是从h至l的范围内
keys ph?:通配ph开头,三位数长度结果
tips:生成环境一般不使用,数量较多,On级别命令,单线程堵塞,无意义取出keys值
怎么用:
热备从节点,scan命令
(2)dbsize:计算key的总数
(3)exists:检查key是否存在,存在返回“1”,不存在返回“0”,O1级别
(4)del key:删除指定的key-value,可删除多个
(5)expire,ttl,persist:
expire key seconds:key在second秒后过期
ttl key:查询key的剩余过期时间,“-2”(代表key已经不存在)
persist key:去掉key的过期时间
(6)type
type key:返回key的类型(string,hash,list,set,zset,none)
二:时间复杂度
命令 时间复杂度
keys O(n)
dbsize O(1)
del O(1)
exists O(1)
expire O(1)
type O(1)
三:数据结构和内部编码
四:单线程
串行执行Redis命令,在一个瞬间只会执行一个命令
1.redis单线程速度快的原因
(1)纯内存
(2)非阻塞IO
(3)避免线程切换和竞态切换
2.注意
(1)一次只运行一条命令
(2)拒绝长(慢)命令 keys,flushall,flushdb..
(3)其实不是单线程 fysnc/close file descriptor 会有单独线程处理