Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis 使用Jedis客户端重命名命令示例_Redis_Jedis - Fatal编程技术网

Redis 使用Jedis客户端重命名命令示例

Redis 使用Jedis客户端重命名命令示例,redis,jedis,Redis,Jedis,我正在使用SpringJedis客户端在我的应用程序中使用Redis。我想重命名这些命令,这样其他人就不能启动相同的命令,以防他们能够连接到我的服务器 有谁能举例说明如何使用绝地武士的重命名命令,然后如何使用修改后的命令触发后续命令?如果恶意用户直接连接到Redis,则可以访问所有操作码 Redis库中没有重命名命令的功能。即使您公开了对重命名命令的自定义API的访问,也无法更改Redis本身的内部操作码 编辑: 没错,确实可以通过更改配置文件来重命名命令 设置新的命令名后,你必须重新编译绝地武

我正在使用SpringJedis客户端在我的应用程序中使用Redis。我想重命名这些命令,这样其他人就不能启动相同的命令,以防他们能够连接到我的服务器

有谁能举例说明如何使用绝地武士的重命名命令,然后如何使用修改后的命令触发后续命令?

如果恶意用户直接连接到Redis,则可以访问所有操作码

Redis库中没有重命名命令的功能。即使您公开了对重命名命令的自定义API的访问,也无法更改Redis本身的内部操作码

编辑: 没错,确实可以通过更改配置文件来重命名命令

设置新的命令名后,你必须重新编译绝地武士

首先在
src/main/java/redis/clients/jedis/Protocol.java
第203行重命名枚举

现在在
src/main/java/redis/clients/jedis/BinaryClient.java
上找到相应的枚举用法,并对其进行更改

这可能就足够了:在任何地方,你仍然保留着旧的命令java接口(如zadd等),在绝地武士内部,它将与Redis通话,调用重命名的命令


这是您的意图吗?

您还不能在不更改配置文件的情况下重命名Redis命令

即使您添加
rename命令
config file指令并重新启动Redis,Jedis似乎也不允许轻松发送任意命令,也不允许提供一种简单(即无代码更改)的重命名方法

然而,如果你真的坚持要重新命名一个命令,然后从绝地那里调用它,你能做的就是评估它。这可能会出现在我丑陋的黑客万神殿(:)中,但在将
rename命令get foo
添加到我的
/etc/redis/redis.conf
并执行
服务redis服务器重启后,看看我能做什么:

$ redis-cli 
redis 127.0.0.1:6379> set bar baz
OK
redis 127.0.0.1:6379> get bar
(error) ERR unknown command 'get'
redis 127.0.0.1:6379> foo bar
"baz"
redis 127.0.0.1:6379> eval "return(redis.call('get', KEYS[1]))" 1 bar
(error) ERR Error running script (call to f_db0e060e4f58231d51f21685b20ff847de8ab9e1): Unknown Redis command called from Lua script 
redis 127.0.0.1:6379> eval "return(redis.call('foo', KEYS[1]))" 1 bar
"baz"
redis 127.0.0.1:6379>

当然,如果你走这条路,你的代码很快就会变得非常混乱,所以要小心你的脚步。。。祝你好运

没有,但Redis文档中说一些命令可以通过更改Redis.conf中的“rename command”来重命名命令。e、 g.重命名命令配置B840FC02D524045429941C15F59E41CB7BE6C52是的,正如预期的那样。因为rename命令正是这样做的-重命名命令。如果要完全禁止对Redis实例调用该命令,应在config:rename命令get“”中执行此操作