Redis 总结

这篇是个人对Redis的总结,供日后参考。

参考:

     redis 菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html

  redis 内部数据结构详解:https://zhuanlan.zhihu.com/p/21368183?refer=zhangtielei

  redis 原理方法双管齐下:https://yq.aliyun.com/articles/67122

一、定义

  • REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
  • Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
  • 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

二、数据结构

  (图片来自 https://yq.aliyun.com/articles/67122)

 

所有redis 对象都被封装成RedisObject,其中type 表示对象类型,ecoding 表示编码方式,其中type 具体类型包括下图五种类型:

(图片来自 https://yq.aliyun.com/articles/67122)

   其中redis,分为两个层面的数据结构

    第一层提供给使用者的数据结构:分为 string,list,set,hash,sorted set(如上图所示)

    第二层内部具体实现:dict(ht),sds,ziplist,qucklist,skiplist,其中具体对应关系如下图:

    (图片来自 https://yq.aliyun.com/articles/67122)

     举个例子:redis>set  str "123"       其中key:“str”,value:"123",其中创建了两个redisobject对象,一个是字符串类型的key,一个是字符串类型的value。

其中redis数据库又是通过dict存储所有键值对的,所有的key都是字符串的对象,value可以是字符串对象、哈希对象、列表对象等

      

    

三、内存管理(淘汰策略)

  如果设置了最大内存,当数据保存超过最大内存时会根据设置的淘汰策略删除超出的数据(如果没有设置淘汰策略,则会所有请求全部返回错误)。具体淘汰策略如下:

  (图片来自 https://yq.aliyun.com/articles/67122)

 

四、内存分析

  目标:提取业务特点,了解业务平静,发现业务bug;

  方法1:离线分析法(redis-rdb-tool)

      ①生成rdb文件(bgsave)②生成内存快照 ③分析内存快照。 其中生成的内存快照为csv格式,

      其中数据  database :数据库id,type:数据类型,key:key,size_in_bytes:理论内存值,ecoding:编码方式,num_elements:成员个数。

      可以将csv导入数据库可以查询来分析数据

  方法2:线上分析法(不推荐)具体参考:https://yq.aliyun.com/articles/67122

    

  

posted @ 2018-04-23 22:32  别说我心狠  阅读(190)  评论(0编辑  收藏  举报