redis

一、Redis概述

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

  • Redis支持数据的备份,即master-slave模式的数据备份。

 

二、Redis 特性与优势

1.Redis的特性

Redis全称REmote Dictionary Server 远程字典服务

  1. 方便扩展

  2. 大数据量高性能

  3. 数据类型多样性

  4. 分布式储存

2.Redis的优势
  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

  2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

  3. 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

  4. 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

3、Redis与其他key-value存储的区别
  1. Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  2. Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

 

 

三、Redis的应用场景

  1. 缓存:这毫无疑问是Redis被大众所熟知的功能,也是其最强大的功能之一,在提示服务器性能方面非常有效

  2. 排行榜功能:利用Redis中有序集合的特性可以很容易的实现排行榜功能,由于排行榜功能一般都要求实时性,如果采用传统数据库来实现将会非常麻烦。

  3. 计数器/限速器:利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数以及在需要限制某些用户访问某个api的频率时(例如抢购),我们均可以使用Redis来代替传统数据库实现,因为传统数据库在实现该类需求时会有非常大的读写压力。

  4. 好友关系:利用集合的一些命令,如交集、差集、并集等能方便的搞定一些共同好友及共同爱好等功能。

  5. 消息队列:除了Redis自身的发布/订阅模式,我们也可以使用其List来实现一个简单的消息队列,例如:到货通知、邮件发送之类的需求,不需要高可靠但是会带来非常大的db压力,完全可以用List来完成异步解耦。

  6. session共享:一般情况下session都是存在服务器的文件中,在集群部署下,同一用户登陆时session文件可能落在不同的服务器上,因此导致了频繁的登陆操作,采用Redis保存session信息后,无论用户访问到哪台机器都能够获取到对应的session信息。

  7. 排行榜系统
  8. 请求限制
  9. 网站访问统计

虽然说Redis的功能很强大但是也有缺点,如果某部分数据内容非常大或者说该部分数据访问频率很低,那么这部分数据便不建议存储在Redis中,数据太大会增加成本,访问频率过低则非常浪费内存资源。

 

四、Redis的多种数据类型

  1. String 字符串

  2. Hash 哈希

  3. List 集合

  4. Set 去重集合

  5. ZSet 有序集合

  6. BitMap

  7. HyperLogloss

  8. Streams 流

posted @ 2024-05-08 16:04  ReturnHome  阅读(13)  评论(0编辑  收藏  举报