Redis5种主要的数据结构:string、hash、list、set、zset
每种数据结构都有自己底层的内部编码实现, 而且是多种实现,这样Redis会在合适的场景选择合适的内部编码
Redis这样设计有两个好处:
第一, 可以改进内部编码, 而对外的数据结构和命令没有影响, 这样一旦开发出更优秀的内部编码, 无需改动外部数据结构和命令, 例如Redis3.2提供了quicklist, 结合了ziplist和linkedlist两者的优势, 为列表类型提供了一种更为优秀的内部编码实现, 而对外部用户来说基本感知不到。
第二, 多种内部编码实现可以在不同场景下发挥各自的优势, 例如ziplist比较节省内存, 但是在列表元素比较多的情况下, 性能会有所下降, 这时候Redis会根据配置选项将列表类型的内部实现转换为linkedlist。