本项目将从架构角度了解高并发,认识高并发,本篇将简单介绍如何通过lua脚本简单操作redis和nginx
Redis客户端执行lua脚本
Redis执行lua脚本语言
redis客户端可以读取lua脚本并执行,为什么是lua脚本而不是php脚本是因为lua脚本的性能高,很适合
在执行lua脚本的时候,有个比较有意思的地方:ARGV[]和KEYS[]
ARGV[]和KEYS[]其实是一个数组,里面的值取决于命令后面跟的参数,我们以 “1 name yin” 为例子,“1”代表一共有一组参数,“name”是这组参数的key,“yin”是这组参数的value
除了直接写以外,还可以传入一个lua脚本
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
如果启动成功就可以去/usr/local 下检查下载完毕的openresty软件
openresty与lua交互
在openresty中可以找到nginx目录,这个目录中的内容和nginx一样,我们可以在其中的nginx.conf配置文件来配置nginx
我们示范一下如何使用nginx来运行lua脚本
这是直接运行一段lua脚本,这样相当于将业务放在了nginx中,对于nginx来说太过臃肿,我们可以将lua脚本单独提取出来,然后让nginx运行lua脚本
以下是hello_world.lua脚本文件中的代码
以下是结果展示
openresty获取通过lua脚本代码获取uri中的参数
浅谈优秀的一个系统
- 一个真正优秀的系统,其中是没有delete这个功能的,就拿阿里的系统举例,阿里系统中每时每刻都会产生大量的sql操作,这些操作其实都不会被真正意义上的删除,大量的冷数据都会被迁移至HBase中保存,就算真的要把数据删除,也要留下可以还原回复的日志,毕竟对于一个公司来说,数据就是财富