• Redis简介


    1. 概况

    Redis是REmote DIctionary Server(远程字典服务器)的缩写,以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。2009年Redis作者Salvatore Sanfilippo将其开源。
    支持的键值数据类型有:

    • 字符串类型(String)
    • 散列类型(Hash)
    • 列表类型(List)
    • 集合类型(Set)
    • 有序集合类型(Sorted Set,ZSet)

    Redis的所有数据都存储在内存中,因此读写速度可以达到10万键值对每秒。因内存的缘故Redis提供对持久化的支持。
    Redis可以为每个键设置生存时间(Time To Live, TTL),生存时间到期后键会自动被删除。因此Redis可以作为缓存系统使用,在Redis3.0中的功能已经可以取代了Memcached。
    Redis是使用C语言进行开发的。

    2. 安装

    Redis的版次号约定为,偶数是稳定的,奇数是非稳定的。
    Windows安装可以通过这个网站指导:https://www.runoob.com/redis/redis-install.html
    因为Redis不支持Windows。或者通过Cygwin在Windows环境下模拟Linux环境,然后再进行Redis安装测试。
    提供一个cygwin网络安装的镜像资源:https://mirror.tuna.tsinghua.edu.cn/help/cygwin/

    3. 几个知识点

    3.1 List VS set VS zset

    List Set ZSet
    可以有重复元素 无重复元素 无重复元素
    有序 无序 有序
    element element element + score

    zset中:1)元素是String类型;2)元素具有唯一性,不重复;3)每个元素关联一个double类型的score,表示element的权重,然后再根据权重将元素从小到大进行排序;4)zset没有修改操作。

    3.2 zset底层数据结构

    因为zset是一个有序集合,通过每个元素的权重(分数)对集合中的元素进行排序,那么如何进行排序呢?
    数组的话,不便于插入和删除;链表的话查询效率太低下,需要遍历所有的元素;平衡树或者红黑树虽然效率较高但是实现起来太过复杂。因此zset的底层采用了一种新的数据结构——跳跃表
    有序链表-->双向有序链表-->跳跃表。
    zset底层达到存储结构由跳跃表实现,实现方式有2中,分别叫做ziplistskiplist
    同时满足一下两个条件的时候用ziplist,其他的时候使用skiplist:

    1. 有序集合保存到元素数量小于128个;
    2. 有序集合保存的所有元素的长度小于64字节。

    当ziplist作为zset的底层存储结构的时候,集合的每个元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员,第二个节点保存元素的分数。

    当skiplist作为zset的底层存储结构的时候,使用skiplist按序保存元素及分数,使用dict来保存元素和分值的映射关系。

    dict保存了key/value,key为元素,value为分值;skiplist保存的有序元素列表,其中每个元素包括元素和分值。dict和skiplist中的元素最后都只想同一个String对象。

    还有很多很多没有理解明白的,以后补充。

  • 相关阅读:
    IOS基础之 (二) 面向对象思想
    Android学习笔记02-Mac下编译java代码
    常用数据库 JDBC URL 格式
    MySQL学习笔记04 插入中文时出现ERROR 1366 (HY000)
    bootstrap学习总结-06 按钮
    H2嵌入式数据库
    02 C语言指针
    页面技巧
    RequireJS进阶(二)
    RequireJS进阶(一)
  • 原文地址:https://www.cnblogs.com/baishouzu/p/12341755.html
Copyright © 2020-2023  润新知