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