redis集群与主从配置
- redis安装-redis集群管理
- redis主从复制(读写分离)-redis集群管理
- redis主从从架构搭建-redis集群管理
- redis从库只读设置-redis集群管理
- redis主从复制的原理-redis集群管理
- redis sentinel(哨兵) 配置详解-redis集群管理
- redis sentinel.conf详解-redis集群管理
- redis 集群环境搭建-redis集群管理
- redis集群插槽分配-redis集群管理
- redis新增集群节点-redis集群管理
- redis删除集群节点-redis集群管理
- redis集群出现宕机没法访问-redis集群管理
- redis 集群使用主从复制架构-redis集群管理
redis 基础教程
- Redis概述
- 基于linux下redis安装与配置
- 基于window安装redis
- Redis配置文件详解
- 通过redis客户端查看和设置配置
- Redis 客户端连接、密码验证、连接数设置
- 使用info命令获取 redis 服务详细信息
- Redis Desktop Manager客户端使用教程
redis 数据类型
Redis 高级教程
知识点
相关文章
更多最近更新
更多Redis Lua脚本操作
2019-04-18 00:16|来源: 网路
Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
语法
Eval 命令的基本语法如下:
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
实例
以下实例演示了 redis 脚本工作过程:
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second 1) "key1" 2) "key2" 3) "first" 4) "second"
Redis 脚本命令
下表列出了 redis 脚本常用命令:
序号 | 命令及描述 |
---|---|
1 | EVAL script numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
2 | EVALSHA sha1 numkeys key [key ...] arg [arg ...] 执行 Lua 脚本。 |
3 | SCRIPT EXISTS script [script ...] 查看指定的脚本是否已经被保存在缓存当中。 |
4 | SCRIPT FLUSH 从脚本缓存中移除所有脚本。 |
5 | SCRIPT KILL 杀死当前正在运行的 Lua 脚本。 |
6 | SCRIPT LOAD script 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 |
redis知识点
redis快速入门
reids常用命令
redis数据结构
java_API_客户端
Jedis
Tlcache
redis_持久化
AOF
RDB
发布订阅(pub/sub)
redis_事件
redis事务
redis通讯协议
RESP(Redis Serialization Protocol)
redis高可用
redis哨兵
监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)
redis主从复制
-
- 主从复制
- 从从复制
-
- slave向master发送sync命令;
- master开启子进程执行bgsave写入rdb文件;
- master发送缓存和RDB文件给slave;
- master发送数据发送给slave完成复制;
redis集群(Redis_Cluster)
相关问答
更多-
redis lua脚本有什么用[2022-03-09]
主要用途是: (1)描述界面:WOW和剑网三的界面都是用LUA写的; (2)沟通引擎:游戏图形引擎提供了一些接口库,可以在LUA中调用; (3)服务器端:有些游戏,例如剑网三,在服务器端也会大量使用LUA。 -
redis lua脚本有什么用[2019-03-24]
主要用途是: (1)描述界面:WOW和剑网三的界面都是用LUA写的; (2)沟通引擎:游戏图形引擎提供了一些接口库,可以在LUA中调用; (3)服务器端:有些游戏,例如剑网三,在服务器端也会大量使用LUA。 -
Redis lua脚本无法正常工作(Redis lua script not working)[2022-07-09]
对redis.call的响应返回一个如下所示的表: {"ok": "string"} (如果类型是一个字符串) 因此,为了正确检查,您应该将代码更改为: local keyType = redis.call("TYPE", KEYS[1]).ok 其余的代码将正常工作。 问题是:TYPE命令是返回“简单字符串”或“状态”redis回复的少数命令之一(请参阅响应类型的redis协议规范 )。 在redis lua文档中,它声明: Redis状态回复 - > Lua表,其中包含一个包含状态的ok字段 这是发生 ... -
是的, LUA脚本是EVALSHA呼叫时的最佳解决方案: 你工作的是redis异步。 因此LUA可以帮助您减少代码数量和代码可读性。 由于减少网络通信, LUA案例更快。 我认为你可以用2个命令编写你的代码。 您的代码中不需要exists 。 local path = KEYS[1] local resourcesPrefix = ARGV[1] local collectionsPrefix = ARGV[2] local ret set ret = redis.call('get',resources ...
-
先阅读: 在做了这个并且用这个脚本打了将近一个星期后,我决定尝试使用其中一个java库来代替脚本。 我已经在其中创建了一个包含该项目的公共回购。 好处是你不仅限于一个~8000字符的输入变量,它的运行速度要快得多。 我将把批处理脚本留给那些绝对需要这样做的人,但我强烈建议使用java代码: Redis脚本项目 实际答案: 使用批处理文件,我能够从该文章复制bash脚本。 @echo off setlocal EnableDelayedExpansion echo Starting removal of k ...
-
欢迎来到Redis :) aeCreateTimeEvent是一个内部Redis服务器功能,不会公开暴露。 此外,没有本地方式的ATM让Redis以用户可配置的cron式方式调用Lua脚本(或其他任何命令)。 一个简单的解决方案是使用您选择的语言设置一个工作进程,该进程按照您指定的时间间隔唤醒并将命令发送给Redis。 然而,这在维护该过程方面存在管理和运营开销。 从v4开始的另一种可能是为此使用模块。 事实上,这只是一个小问题: https : //gist.github.com/itamarhaber/ ...
-
如果你在一个if语句中定义一个Local变量,它只存在于if语句中。 在手册中查看本地变量作用域。 尝试 local ckid = redis.pcall('get',KEYS[1]) local meta if ckid ~= nil then meta = redis.call('hgetall', ckid) else meta = 'none' ckid = 'none' end return {ckid, meta} If you define a L ...
-
是否可以在redis中调用其他lua脚本中定义的lua函数?(is it possible to call lua functions defined in other lua scripts in redis?)[2022-01-13]
重要通知:请参阅下面的Josiah的回答。 我的回答结果证明是错误的,或者至少是不完整的 。 这让我非常高兴,它让Redis变得更加灵活。 我的错误/不完整答案: 我很确定这是不可能的。 您不能使用全局变量(读取文档 ),并且脚本本身由Redis Lua引擎获取本地和临时范围。 如果Lua函数执行任何写操作,它们会在幕后自动设置“写入”标志。 这会启动一个事务。 如果您级联Lua调用,Redis中的簿记将变得非常麻烦,尤其是在Redis从站上执行级联时。 这就是EVAL和EVALSHA故意无法在Lua脚本中 ... -
按字面意思,文本按预期存储。 如果要存储格式化的字符串,则需要执行此操作 redis.call("set", "text", string.format("First line\nSecond line") ); The text is being stored as expected, literally. If you want to store the formatted string you need to do just that redis.call("set", "text", string ...
-
Redis本身支持cjson。 要从Lua脚本计算SHA1,您可以使用redis.sha1hex 。 你会在这里找到文档。 cjson is supported natively in Redis. To compute a SHA1 from a Lua script you can use redis.sha1hex. You will find the documentation here.