1.Redis常用的数据类型
String,List,Set,Zset,Hash
String字符串:Redis最基本的类型.一个key对应一个value.String类型是二进制安全的.也就是说可以存储任何数据.value最大内存为512M
数据结构:String的数据结构为简单动态字符串.类似String Buffer.是可以修改的字符串.内部采用预分配冗余空间来减少内存的频发分配
内部为一个预分配空间,一个实际空间.当字符串长度小于1M的时候,扩容都是加倍。当大于1M的时候,每次扩容增加1M,最大容量为512M。
List列表:List是一种单键多值的数据类型.为简单的字符串列表.插入有序可以头插和尾插
数据结构:List的数据结构为快速链表QuickList.在列表元素较少的情况下为压缩列表ZipList.只有在数据量多的时候.这些ZipList会形成一个双向的QuickList列表
Set集合:Set单键多值的数据类型.无序集合.元素不能重复.
数据结构:底层是一个Hash表.所有在不考虑哈希碰撞的情况下.时间复杂度为O1
Hash哈希:类型为key field value
数据结构:压缩列表和哈希表.元素较少时使用的是压缩列表.元素较多时使用的是哈希表
Zset有序集合:元素不可重复.通过评分(score)对元素进行排序.可以通过评分进行范围查询
数据结构:哈希标和跳跃表.哈希表保证元素的唯一性.跳跃表保证元素的排序.可以通过评分范围查询
2.Redis的过期策略有哪些
定时删除,定期删除,惰性删除这三种