微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis基础篇 高速缓存技术与Redis的庐山真面目 AUTHOR:LBY

最新更新

  • 8.24 创建
  • 8.25 更新第二章 客户端的使用以及配置参数

Redis

Redis 由 Vmware 公司开发, (卧槽 虚拟机)! 因为考虑有没有学习Linux的同学 基础篇使用Windows的Redis入门 后期会进入Linux的Redis学习阶段

Nosql 的简介

有些数据用MysqL这种数据库存储很不nice!譬如一些图片 秒杀活动之类的数据 这个时候就可用用到Redis类似的Nosql来存储了

高速缓存技术

用内存存储数据的技术 从而提高curd(增删改查)速度

扯句题外话kodachi是一个存储在内存上的系统 黑客们很喜欢使用它 毕竟一个关机键就可以完全清除他们的犯罪历史 遇见危险 直接关机处理 有哪个小可爱会不喜欢呢

运存(内存)空间很小 如何去保存数据呢? 关机就清除数据的话 不就都没了吗?

  • 我们先要明白 数据使用频率很高的时候我们称之为 热数据 ,举个栗子, 淘宝的商品 steam的热销 哔咔的推荐本 都算是一种热数据
  • 如果我们每次都想看这些数据,我们就不用把他们放在MysqL这样存储大量数据的地方了(虽然MysqL有索引这样的机制 但还是麻烦!) 毕竟放在硬盘的数据怎么都比不过存在内存上的数据
  • 反而呢 内存非常贵 (吃鸡火热的时候 一个内存买500了解一下) 为了节约成本 不经常使用叫做冷数据 存放在硬盘里这是很不错的选择

万一哪一天停电没有存储在硬盘的热数据岂不是直接GameOver, 所以我们需要了解一个点 热数据其实不但保存在内存 他也有机会在硬盘中被存储 这里存储在硬盘的热数据就是备份备份

所以加入高速缓存的存储机制是这样的:

  • 去应用程序里找数据(变量, 列表之类的简单数据)
  • 没在App找到,辨认这个数据是否为热数据,
  • 是的话就去缓存中查找(redis),冷数据就去 数据库查找
  • 实在找不到你在HDD里找找?

如果缓存数据发生变化记得及时 更新到数据库里哦!

使用案例

  • 买的火爆的商品数据在redis中,买的一般的数据在数据库
  • 网红的言论在redis中,普通人的评论数据库
    • 这不是流量的限流,只是为了让更多人加载网红的言论速度更快,普通人的评论似乎没那么多人去看加载快不快与我无关~
    • 区别对待是吧 好家伙
  • 超大量(上亿万)的数据请求提交的时候 先交给集群们
  • 集群们先暂存数据拿到数据之后等到请求来到低谷期在上传MysqL数据库
  • 高速缓存是并发的 买秒杀物品的时候 抢到之后下单支付明明到了支付界面,但是还是可能会支付失败是因为其他进程线程虽然晚入一步订单界面但是他提前执行了订单操作, 从而自己被挤了下去. 订单失败的人就想 这玩意儿有黑幕!一定是商家自导自演! 引入Redis后 只要提交了数据就是 一个一个执行不会出现插队或者加塞的情况 你可以慢慢下单 甚至插科打诨一段时间再去下单 只要道德允许 Redis就能允行。

集群

如果大量数据只靠一台服务器做告诉缓存似乎没那么靠谱 我们就可以搭建集群 类似HDFS叫做 LAZY_PERSIST 的玩意儿. 一般我们在Docker这种容器中搭建

Redis的介绍

一个Nosql数据库产品之一 以键值对的形式进行存储 像JSON 像DICT 像Mapper 由C语言编写(源码开源) 理论可以达到10个w的QPS QPS指的是每秒查询次数

X轴是链接数 Y轴是一秒查询的次数

X轴是链接数 Y轴是一秒查询次数

安装与服务器的搭建

下载链接https://github.com/tporadowski/redis/releases,下载ZIP即可

现在之后不要打开任何程序 我们需要让redis-server.exe启动的时候redis.windows.conf, 但是 exe 认不会加载任何文件 我们需要写一个Bat文件来实现这样的效果

新建记事本txt:

redis-server redis.windows.conf

写完之后 存储为.bat文件即可

打开bat弹出的cmd类似于下图

启动客户端的话可以直接点击redis-cli.exe运行

基础使用

启动客户端的话可以直接点击redis-cli.exe运行 界面简陋 见谅 服务器端口认 6379

认, Redis有16个逻辑库(0~15) 都是空的 可以存储数据 使用 select <id> 切换到指定id的逻辑库 如

select 0

切换到 0 号逻辑库

还有以下命令:

set <key> <value> 新增键值对
get <key> 获取指定key的value
del <key> 删除
clear 清空控制台

虽然好用但是简陋!高端程序员的美工都差劲(暴论)

安装 RedisDesktopManager 优化你的眼睛查看更高级的界面

官网收费从别人那里借来的免费网盘链接

百度网盘:https://pan.baidu.com/s/15xVRpCT8mkP2uT8PoBHT3g 提取码:v727

Redis的持久化

为了不让突然断电的事故导致Redis数据丢失 Redis提供了俩不错的方案

  • RDB方案
    • 定期存储备份 只有触发一定条件 才会进行同步 比如一分钟读写1000次我就进行同步
  • AOF方案
    • 日志记录 你写一次我就记录一次 宕机后 使用日志重启就会把操作的记录复刻一次

参数配置

对Redis本身的配置

  • port 端口 认 6379
  • bind 认被注释 表示可以连接数据库的IP地址 推荐是0.0.0.0 表示全部
  • timeout 超时时间 认是0 表示没有超时时间
    • 长时间不用不关闭也不好 timeout最好设置个数字
  • logfile 日志输出文件名称
    • 填写之后记得找到注释并删除注释: syslog-enabled
    • 值设置为no就行
  • databases 逻辑库的数量
  • requirepass
    • 密码 认被注释 建议打开

rdb是内存数据同步到硬盘的数据库文件 有如下操作

  • save 同步频率
  • 写入包括增删改
  • save 60 10000 指的是 在 60s 之内 写入了10000条数据就进行同步
  • save 900 1 指的是900内写入了一条数据都可以进行同步
  • rdbcompression
  • 同步数据采用压缩
  • rdbchecksum
  • 同步数据校验
  • rdbfilename
  • rdb文件名称
  • dir
  • redis所在的目录、

RDB 同步方案似乎会导致数据的丢失? 我们不妨了解一下AOF的备份方案吧

  • maxclients 最大连接数
    • 认无限制 实际环境推荐设置一个大数字
  • maxmemory 占用内存的大小
    • 认无限制 实际环境推荐设置一个70%的内存
  • appendonly 开始AOF模式
  • appendfsync 同步频率
    • no - 不可靠就是了
    • everysec - 每秒都会把数据写入到硬盘 不可靠就是了
    • always - 每次内存写入 都会写入硬盘

原文地址:https://www.jb51.cc/wenti/3280191.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐