Redis介绍
Redis是什么
官网:https://redis.io/
中文官网:http://www.redis.net.cn/
推荐文档:http://www.redis.cn/documentation.html
官方说明:
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
其实就是内存的数据结构服务器。键值对集合。
特点:
Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256字节字符串为例,它的读取速度可高达110000次/s,写速度高达81000次/s。
Redis跟memcache不同的是,储存在Redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。
Redis数据类型
string 字符串
是redis的基本数据类型,一个Key对应一个Value,其中上面说的位图也是string类型的,一个string的value最大存储250MB。
hash 哈希表
也是Key对应Value,不过这个Value是一个 redis 中string类型集合,hash特别适合用于存储对象。
每个 hash 可以存储 232 -1 键值对(40多亿)。
作用:也叫做字典,可以存储字典以及对象, 列表就像属性 值一样。
list 列表
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),可以添加重复数据。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
作用:双端链表,消息队列,时间轴
Set集合
字符串的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。一个Set中的数据不能重复。
作用:集合的概念就是一堆不重复值的组合。
可以做交集、并集、差集等操作
ZSet有序集合
和Set一样,但是SortSet每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
SortSet的成员是唯一的,但是分数可以重复。
作用:可以排序 优先级
Redis使用场景
众多语言都支持Redis,因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
拿大型网站来举个例子,比如a网站首页一天有100万人访问,其中有一个板块为推荐新闻。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。上面已经说过,Redis支持丰富的数据类型,所以这完全可以用Redis来完成,将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
总之而言,就是缓存一些经常使用的热数据。