亿级流量多级缓存(一)之初识项目

2021/02/28 Architect 共 1135 字,约 4 分钟

本项目将从架构角度了解高并发,认识高并发,本篇将简单介绍如何通过lua脚本简单操作redis和nginx

Redis客户端执行lua脚本

  • Redis执行lua脚本语言

    image

  • redis客户端可以读取lua脚本并执行,为什么是lua脚本而不是php脚本是因为lua脚本的性能高,很适合

    image

  • 在执行lua脚本的时候,有个比较有意思的地方:ARGV[]和KEYS[]

    image

    image

    ARGV[]和KEYS[]其实是一个数组,里面的值取决于命令后面跟的参数,我们以 “1 name yin” 为例子,“1”代表一共有一组参数,“name”是这组参数的key,“yin”是这组参数的value

  • 除了直接写以外,还可以传入一个lua脚本

    image

    image

openresty执行lua脚本

简单介绍openresty

  • OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

安装openresty

  • 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令)。运行下面的命令就可以添加我们的仓库:

    ​ yum install yum-utils

    ​ yum-config-manager –add-repo https://openresty.org/package/centos/openresty.repo

    然后就可以像下面这样安装软件包,比如 openresty:

    ​ yum install openresty

  • 安装完毕后可以执行命令 service openresty start

    image

  • 如果启动成功就可以去/usr/local 下检查下载完毕的openresty软件

    image

openresty与lua交互

  • 在openresty中可以找到nginx目录,这个目录中的内容和nginx一样,我们可以在其中的nginx.conf配置文件来配置nginx

    image

  • 我们示范一下如何使用nginx来运行lua脚本

    image

    image

  • 这是直接运行一段lua脚本,这样相当于将业务放在了nginx中,对于nginx来说太过臃肿,我们可以将lua脚本单独提取出来,然后让nginx运行lua脚本

    image

    以下是hello_world.lua脚本文件中的代码

    image

    以下是结果展示

    image

  • openresty获取通过lua脚本代码获取uri中的参数

    image

    image

    image

浅谈优秀的一个系统

  • 一个真正优秀的系统,其中是没有delete这个功能的,就拿阿里的系统举例,阿里系统中每时每刻都会产生大量的sql操作,这些操作其实都不会被真正意义上的删除,大量的冷数据都会被迁移至HBase中保存,就算真的要把数据删除,也要留下可以还原回复的日志,毕竟对于一个公司来说,数据就是财富

文档信息

Search

    Table of Contents