小编给大家分享一下Redis->eval()的优势有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!平时你用 Redis 是不是经常 get()、set()一把梭?其实 Redis 中还有很多有用的数据结构,以及各种方法免费云主机域名。今天我们就来测试一下eval()方法。Redis Eval 官方说明(节选)从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 EVAL 命令对 Lua 脚本进行求值。Redis 使用单个 Lua 解释器去运行所有脚本,并且, Redis 也保证脚本会以原子性(atomic)的方式执行:当某个脚本正在运行的时候,不会有其他脚本或 Redis 命令被执行。这和使用 MULTI / EXEC 包围的事务很类似。在其他别的客户端看来,脚本的效果(effect)要么是不可见的(not visible),要么就是已完成的(already completed)。另一方面,这也意味着,执行一个运行缓慢的脚本并不是一个好主意。写一个跑得很快很顺溜的脚本并不难,因为脚本的运行开销(overhead)非常少,但是当你不得不使用一些跑得比较慢的脚本时,请小心,因为当这些蜗牛脚本在慢吞吞地运行的时候,其他客户端会因为服务器正忙而无法执行命令。实测我的理解,Redis 中的 eval() 方法一般用于需要执行多个 redis 操作,来完成一个目标的场景。下面我模拟了一个操作 100 次 redis 的场景,当然实际可能并不需要这么多,仅仅想让大家看到差别。结果:显而易见,eval碾压性地,比在代码中循环set来的快。……你以为这就完了?不!evalSha了解一下?EvalSha 说明根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值。将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。EvalSha 实测结果:从我测试的结果来看,evalSha的速度并不比eval有显著的提升。但是,在生产环境下,如果使用evalSha会比eval发送更小的数据包,占用更少的网络资源。因为eval每次都需要把脚本完整发送给redis,而evalSha只需要传递一个sha1即可。当执行过一次eval后,evalSha 才可以直接调用。福利下面是我封装的一个方法,优先使用 evalSha 尝试,失败则使用 eval 方法。以上是Redis->eval()的优势有哪些的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云行业资讯频道!
相关推荐: Backing up Oracle Databases on UNIX with the TSM TDP
Many of the directory and file names mentioned below will be site specific. For the sake of illustration, I’m assuming that Oracle…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。