简介
redis是KV型NoSQL,基于键值对中的值,提供了5中数据结构:string、list、zset、hash、set,每种数据结构都有多种底层编码实现,在合适的场景选择合适的内部编码
Redis全局命令
命令 | 命名描述 |
---|---|
keys * | 查看所有键,时间复杂度O(N),会遍历所有键,当保存了大量key时,线上环境禁止使用,需要耗费非常多时间 |
dbsize | 键总数,时间复杂度O(1),不会遍历所有键得到总数,直接访问内部的键总数的变量 |
exists key | 检查键是否存在,存在返回1,不存在返回0 |
del key [key…] | del是通用命令,无论值是什么数据类型,都可以将其删除,返回成功删除键的个数 |
expire key seconds | 对键添加过期时间,超过过期时间后会自动删除键 |
ttl key | 返回键的剩余过期时间,-1表示键没设置过期时间,-2键不存在 |
type key | 键的数据结构类型,键不存在,返回none |
object encoding key | 查询内部编码 |
redis数据结构选择
对外有5种数据结构,对内每种数据结构有多种编码实现,这样有两个好处:
一是使得外部数据结构和内部编码实现进行解耦,这样改进内部编码的话,对外的数据结构和命令是没有影响的
二是多种编码实现可以在不同的场景下发挥各自的优势,例如ziplist比较节省内存,但在列表元素比较多的时候,性能会下降,这时候redis会将列表类型的内部实现转换成linkedlist。