1.基于内存存储实现
在MySQL数据库中,所有的读写操作都要通过IO的方式从硬盘中获取。在Redis中,所有的操作都是基于内存实现的,从而减少IO操作提高数据库性能。
2.高效的数据结构
SAS简单动态字符串
- 字符串长度:SAS查询的时间复杂度O(1),c语言中时间复杂度O(n)
- 空间分配来看:
- 在c语言中,频繁的修改字符串,会频繁的修改空间大小很耗费性能。
- SAS如果修改字符串,只需调用未分配的空间即可。
- 惰性空间的释放:SAS在缩短时,不是去分配空间。而是通过free指针记录释放的空间,省的去操作空间。以此节约时间。
- 二进制存储:Redis可以存储二进制数据,而c语言遇到’/0’结束。而SAS时根据len属性来判断是否结束。
字典
字典实际上就是哈希表,在redis中大部分数据存储都使用到了哈希表的结构。在java中的hashMap也使用字典数据结构。好处就是获取任意值的时间复杂度为O(1)
跳跃表
- 是Redis特有的数据结构,是在链表的基础上,增加了多级索引来增强查找效率问题。
- 跳跃表的平均查找的时间复杂O(logn),最坏查找O(n)
3.合理的编码方式
- String :
- 当值为数字时,编码格式int。
- 当值为字符串时且长度小于等于39时,编码格式为embstr
- 当值为字符串且长度大于39时ÿ