Redis观念以及底层数据布局
副问题[/!--empirenews.page--]
Redis 简介 REmote DIctionary Server(Redis) 是一个由SalvatoreSanfilippo写的key-value存储体系。 Redis是一个开源的行使ANSI C说话编写、遵守BSD协议、支持收集、可基于内存亦可耐久化的日记型、Key-Value数据库,并提供多种说话的API。 它凡是被称为数据布局处事器,由于值(value)可所以字符串(String), 哈希(Map), 列表(list), 荟萃(sets) 和有序荟萃(sorted sets)等范例。 Redis特点 Redis 是完全开源免费的,遵守BSD协议,是一个高机能的key-value数据库。 Redis 与其他 key - value 缓存产物有以下三个特点:
Redis 上风 机能极高 – Redis能读的速率是110000次/s,写的速率是81000次/s 。 富厚的数据范例 – Redis支持 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据范例操纵。 原子 – Redis的全部操纵都是原子性的,同时Redis还支持对几个操纵全并后的原子性执行。 富厚的特征 – Redis 还支持 publish/subscribe, 行列,key 逾期等等特征。 Redis工具范例简介 Redis是一种key/value型数据库,个中,每个key和value都是行使工具暗示的。 好比,我们执行以下代码:
个中的key是message,是一个包括了字符串"message"的工具。而value是一个包括了"hello redis"的工具。 Redis共有五种工具的范例,别离是: Redis中的一个工具的布局体暗示如下:
type暗示了该工具的工具范例,即上面五此中的一个。但为了进步存储服从与措施执行服从,每种工具的底层数据布局实现都也许不止一种。encoding就暗示了工具底层所行使的编码。
字符串工具的编码可所以int、raw可能embstr 假如一个字符串的内容可以转换为long,那么该字符串就会被转换成为long范例,工具的ptr就会指向该long,而且工具范例也用int范例暗示。 平凡的字符串有两种,embstr和raw。embstr应该是Redis 3.0新增的数据布局,在2.8中是没有的。假如字符串工具的长度小于39字节,就用embstr工具。不然用传统的raw工具。
embstr的甜头有如下几点:
raw和embstr的区别可以用下面两幅图所示:
列表工具的编码可所以ziplist可能linkedlist
linkedlist是一种双向链表。它的布局较量简朴,节点中存放pre和next两个指针,尚有节点相干的信息。当每增进一个node的时辰,就必要从头malloc一块内存。
哈希工具的底层实现可所以ziplist可能hashtable。 ziplist中的哈希工具是凭证key1,value1,key2,value2这样的次序存放来存储的。当工具数量不多且内容不大时,这种方法服从是很高的。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |