码迷,mamicode.com
首页 > 其他好文 > 详细

Redis简介

时间:2020-02-22 00:34:55      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:value   开源   散列类型   自动   数组   时间   windows环境   --   知识点   

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对象。

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

Redis简介

标签:value   开源   散列类型   自动   数组   时间   windows环境   --   知识点   

原文地址:https://www.cnblogs.com/baishouzu/p/12341755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!