redis→分布式缓存

简介 

1. redis 是什么? 

  • REmote DIctionary Server(远程字典服务器) 
  • 是完全开源免费的,用 C 语言编写的,遵守 BSD 协议,是一个高性能的 (key/value)分布式内存数据库,基于内存运行并支持持久化的 NoSQL 数据库, 是当前最热门的 NoSql 数据库之一,也被人们称为数据结构服务器。
  • 能满足对海量数据的读写
  • redis 的键只能是字符串
  • redis 的值支持多种数据类型:
  1. 字符串:string
  2.  哈希:hash
  3. 字符串列表:list
  4. 字符串集合:set
  5. 有序集合:zset(sorted set)  HyperLogLog 结构:redis2.8.9 版本之后才有,用来做统计的算法
  6. GEO 结构:redis3.2 版本之后才有,是地理位置相关的数据类型 

2. redis 的优点? 

  • 高性能(Redis 读的速度是 11W 次/s,写的速度是 8.1W 次/s)
  • 原子性(保证数据的准确性)
  • 持久存储(两种方式 RDB/快照,AOF/日志)
  • 主从结构,主机会自动将数据同步到从机,可以进行读写分离
  • 从 3.0 版本开始,支持集群 

3. redis 的缺点? 

  • 由于是内存数据库,所以,单台机器存储的数据量,跟机器本身的内存 大小有关。虽然 redis 本身有 key 过期策略,但是还是需要提前预估和 节约内存。如果内存增长过快,需要定期删除数据。
  • 修改配置文件,进行重启,将硬盘中的数据加载进内存,时间比较久。 在这个过程中,redis 不能提供服务。 

4. redis 的主要功能? 

  • KV
  • Cache
  • Persistence 

5. redis 与其他 key-value 缓存产品的区别 

  • redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的 时候可以再次加载进行使用。
  • redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set, zset,hash 等数据结构的存储。 
  • redis 支持数据的备份,即 master-slave 模式的数据备份。 

6. redis 的主要功能 

  • 内存存储和持久化:redis 支持异步将内存中的数据写到硬盘上,同时 不影响继续服务。
  • 分布式缓存
  • 取最新 N 个数据的操作,如:可以将最新的 10 条评论的 ID 放在 List 集合。
  • 模拟类似于 HttpSession 这种需要设定过期时间的功能。
  • 发布、订阅消息系统。
  • 定时器、计数器。 

7. redis 的应用场景? 

  • 主要应用在高并发和实时请求的场景
  • 关注列表,粉丝列表
  • 微博数,粉丝数
  • 热门微博 

8. redis 版本下载

  • https://redis.io/
  • http://www.redis.cn/
  • 下载最新稳定版,如下图所示。 

9.阿里商品信息如何存放?

(1)商品的基本信息

RDBMS中,mysql(内部工程师自己根据业务改造)

(2)商品描述、详情、评论(多文字类的):MongDB中

(3)商品图片

  • 淘宝自己的TFS
  • Google的GFS
  • Hadoop HDFS

(4)商品关键字:淘宝Isearch搜索引擎(多隆,蔡景现)

(5)商品的波段性热点高频信息:Redis,Tair

(6)商品交易、价格计算、支付系统

         外部系统,第三方提供支付接口

         支付宝,由苗人凤负责


Redis安装

(1)将tar包上传 /usr/local并解压

(2)安装一些可能用到的东西

(3)在redis解压路径,进行编译

(4)进行安装

(5)安装好的可执行文件在以下目录


Redis启动和停止

(1)启动redis

(2)停止 ctrl + C

(3)修改配置文件

(4)修改为yes,表示走守护进程

(5)使用刚修改的配置,不占用当前窗口

(6)查看启动后的进程

(7)关闭服务端


Redis客户端

(1)进入客户端


Redis杂项知识

(1)redis-benchmark可用于性能测试

必须redis-server启动后,再运行

(2)redis默认端口6379

6379对应着号码MERZ

(3)redis所有的索引都是从零开始

(4)redis的默认库有16个(索引0~15)

(5)查看多少个键

(6)前一个清当前库,后一个清所有库


Redis配置文件详解

(1)对大小写不敏感,只支持bytes类型

(2)redis.conf作为一个总的文件,可以包含其他文件

(3)设置后台进程,端口号,日志级别,库的数量

(4)快照的配置,用于配置RDB策略,配置dump文件相关信息

(5)主从复制的配置

(6)可以配置密码,默认无密码,配置密码,16个库是用同一个密码

(7)最大连接,最大内存的一些设置

(8)这里可以配置AOF的持久化策略


Redis的RDB策略

 RDB 是什么 

  • Redis DataBase,在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是 Snapshot 快照,它恢复时是将快照文件直接读到内存里
  • Redis 会单独创建(fork,可以理解为拷贝)一个子进程来进行持久化,会先将数 据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持 久化好的文件
  • 整个过程中,主进程是不进行任何 IO 操作的,这就确保了极高的性能如果需要进 行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。
  • RDB 的缺点是最后一次持久化后的数据可能丢失。 

Fork 

  • Fork 的作用是复制一个与当前进程一样的进程。
  • 新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是 是一个全新的进程,并作为原进程的子进程

RDB 的优点 

  • 适合大规模的数据恢复 
  • 对数据完整性和一致性要求不高 

RDB 的缺点 

  • 在一定间隔时间做一次备份,所以如果 redis 意外 down 掉的话,就会丢失最后一 次快照后的所有修改
  • Fork 的时候,内存中的数据被克隆了一份,大致 2 倍的膨胀性需要考虑 

(1)如何配置RDB

(2)性能配置:持久化的RDB文件会进行压缩,改为NO就不压缩

(3)redis会对持久化的数据进行校验,增加10%的性能消耗


RedisAOF策略

 AOF 是什么 

  • 以日志的形式来记录每个写操作,将 Redis 执行过的所有写指令记录下来(读操作 不记录),只许追加文件但不可以改写文件
  • redis 启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文 件的内容将写指令从前到后执行一次以完成数据的恢复工作 

(1)以日志的形式持久化操作(只读写的日志)

(2)配置AOF策略,改yes,开启AOF

  (3)AOF数据修复

(4)dump和AOF同时存在,是AOF生效


Redis的事务

 redis 的事务是什么? 

  • 可以一次执行多个命令,批处理,本质是一组命令的集合。一个事务中的所有命令 都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 

redis 的事务能做什么? 

  • 一个队列中,一次性、顺序性、排他性的执行一系列命令 

(1)正常执行

(2)取消事务

(3)全体连坐

(4)redis支持部分事务(要求语法正确)

(5)watch监控

乐观锁和悲观锁

悲观锁:生产环境下用的不多

乐观锁:加个行锁

猜你喜欢

转载自blog.csdn.net/super_lixiang/article/details/82707961