php redis lua脚本,redis中使用lua脚本

redis中使用lua脚本

2018-06-12 02:13:00

(304)

### redis中使用lua脚本 ###

---

- 前言

redis自身是单进程模型,在处理lua脚本的时候能够保证不存在任何其他执行的命令或脚本,因此能够保证业务的原子性,同时,处理性能比使用事务和管道也更高

- redis命令

- `eval`

- 格式: eval script_content key_arg_len key_args extra_args

- 说明: 键参数通过KEYS内置变量调用, 位移跟lua惯例一样,从1开始; 额外参数通过ARGV内置变量获取, 位移跟lua惯例一样,从1开始.

- `evalsha`

- 格式: evalsha script_content_hash key_arg_len key_args extra_args

- 说明: redis在执行成功lua脚本后默认会缓存lua脚本内容, 缓存命中依据为lua脚本内容hash, 在脚本内容复杂的情况下, 使用脚本缓存能够节省一定的网络开销.

- `script exists`

- 格式: script exists script_content_hash

- 说明: 查询脚本缓存是否存在

- `script load`

- 格式: script load script_content

- 说明: 载入lua脚本, 返回脚本hash

- lua api

- `redis.call`

- 说明: 按照标准redis命令执行; 该方法不会抑制命令错误

- `redis.pcall`

- 说明: 按照标准redis命令执行; 该方法会抑制命令错误,返回错误提示

- `redis.log`

- 格式: redis.log(log_level, log_message)

- 说明: log_level包括`redis.LOG_DEBUG`, `redis.LOG_VERBOSE`, `redis.LOG_NOTICE`, `redis.LOG_WARNING`.

- `table`库

- `string`库

- `math`库

- `debug`库

- `cjson`库

- 备注

1. 由于lua脚本执行会阻塞其他客户端命令,因此lua脚本不宜执行过长,默认`lua-time-limit`参数为5秒.

2. lua脚本缓存会在redis关机或者重启后失效.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值