当前位置: 首页 > news >正文

聊城网站制作公司电话没有营业执照网站备案

聊城网站制作公司电话,没有营业执照网站备案,伪静态wordpress,网站空间绑定域名首先#xff0c;让我们先回顾一下上一篇讲的在Redis Functions中关于将key的名字作为参数和非key名字作为参数的区别#xff0c;先看下面的例子 首先#xff0c;我们先在一个Lua脚本文件mylib.lua中定义如下的库和函数 //--------------------mylib.lua 文件开始 --------…首先让我们先回顾一下上一篇讲的在Redis Functions中关于将key的名字作为参数和非key名字作为参数的区别先看下面的例子 首先我们先在一个Lua脚本文件mylib.lua中定义如下的库和函数 //--------------------mylib.lua 文件开始 ----------- // #!lua name mylib local function my_hset(keys, args) local hash keys[1] local time redis.call(TIME)[1]     //这一行的目的是执行TIME命令得到当前的服务器时间 return redis.call(HSET, hash, _last_modified_, time, unpack(args)) end redis.register_function(my_hset, my_hset) //--------------------mylib.lua 文件结束 ----------- // 然后我们在命令行中运行如下命令 $ cat mylib.lua | redis-cli -x FUNCTION LOAD mylib 当我们再运行如下FCALL命令时候我们会得到如下的结果 redis FCALL my_hset 1 myhash_key first_field first value second_field second value (integer) 3 上面命令的my_hset是函数名1代表第一个参数myhash_key是key名后面的first_field first value second_field second value 都是这个key: myhash_key的field:value对 我们通过在Redis客户端运行 HGETALL myhash_key可以查看到相对应的结果 redis HGETALL myhash_key 1) _last_modified_ 2) 1659536487 3) first_field 4) first value 5) second_field 6) second value 好了在复习完了上一篇Redis Functions的内容之后我们可以看到上面的例子中mylib库中只包含了一个函数my_hset, 事实上在一个库中可以包括多个函数在下面的例子中我们要添加另外2个function my_hgetall  与 my_hlastmodified. 其中函数my_hgetall相当于在redis 客户端执行hgetall命令而my_hlastmodified函数返回的是传入的key中_last_modified这一个field的值 首先让我们在mylib.lua中添加这两个function local function my_hgetall(keys, args) local hash keys[1] local res redis.call(HGETALL, hash) return res end local function my_hlastmodified(keys, args) local hash keys[1] return redis.call(HGET, keys[1], _last_modified_) end 然后在mylib中注册这两个函数 redis.register_function(my_hgetall, my_hgetall) redis.register_function(my_hlastmodified, my_hlastmodified) 因为我们要在mylib库中新增两个函数所以我们需要运行如下的命令 $ cat mylib.lua | redis-cli -x FUNCTION LOAD REPLACE mylib 接下来我们运行my_hgetall函数与my_hlastmodified redis FCALL my_hgetall 1 myhash_key 1) _last_modified_ 2) 1659536487 3) first_field 4) first value 5) second_field 6) second value redis FCALL my_hlastmodified 1 myhash_key 1659536487 最后我们可以通过FUNCTION LIST命令来查看当前所有的Redis Function的库及其包含的函数信息。下面我们来查看一下当前库mylib中包括的3个function的信息 127.0.0.1:6381 FUNCTION list 1) 1) library_name 2) mylib 3) engine 4) LUA 5) functions 6) 1) 1) name 2) my_hset 3) description 4) (nil) 5) flags 6) (empty array) 2) 1) name 2) my_hlastmodified 3) description 4) (nil) 5) flags 6) (empty array) 3) 1) name 2) my_hgetall 3) description 4) (nil) 5) flags 6) (empty array) 在Redis的官方文档中我们发现我们可以在库中定义一个function供库中的其他函数使用在官方的使用说明它给出了一个例子用于错误检测。我们下面来看看这个例子 定义一个check_keys的函数用来检测客户端调用的redis function的函数输入的key是否存在并且只有一个 local function check_keys(keys) local error nil local nkeys table.getn(keys) if nkeys 0 then error Hash key name not provided elseif nkeys 1 then error Only one key name is allowed end if error ~ nil then redis.log(redis.LOG_WARNING, error); return redis.error_reply(error) end return nil end 相应的我们也需要修改已经有的3个函数让他们去调用新增的check_keys函数 local function my_hset(keys, args) local error check_keys(keys) if error ~ nil then return error end local hash keys[1] local time redis.call(TIME)[1] return redis.call(HSET, hash, _last_modified_, time, unpack(args)) end local function my_hgetall(keys, args) local error check_keys(keys) if error ~ nil then return error end local hash keys[1] local res redis.call(HGETALL, hash) return res end local function my_hlastmodified(keys, args) local error check_keys(keys) if error ~ nil then return error end local hash keys[1] return redis.call(HGET, keys[1], _last_modified_) end 这里要注意一点在上面地例子中如果我们运行FCALL redis FCALL my_hgetall 1 myhash_key 1) _last_modified_ 2) 1659536487 3) first_field 4) first value 5) second_field 6) second value 我们可以看到运行是正常地但是如果我们运行FCALL_RO redis FCALL_RO my_hgetall 1 myhash_key (error) ERR Can not execute a script with write flag using *_ro command. 我们会收到一个错误。这是为什么呢 事实上函数my_hgetall的目的只是从数据中读取数据并没有写操作。但是当我们定义它的时候并没有标注它是只读属性 local function my_hgetall(keys, args) local hash keys[1] local res redis.call(HGETALL, hash) return res end 所以这个时候当我们用命令FCALL_RO就会返回一个错误Can not execute a script with write flag using *_ro command 所以为了可以让FCALL_RO执行一个只读属性的函数我们需要对my_hgetall的注册方式进行一下修改 redis.register_function{ function_namemy_hgetall, callbackmy_hgetall, flags{ no-writes } } 这个时候我们再运行FCALL_RO命令时候我们就会得到正确的结果了 redis FCALL_RO my_hgetall 1 myhash_key 1) _last_modified_ 2) 1659536487 3) first_field 4) first value 5) second_field 6) second value 下面我们来看看Redis functions是如何在集群中运行的 在非集群状态时候如果有主从节点那么主节点上的function会自动地被复制到从节点这与function创建地初衷也是一致地Redis认为Functions是数据库的一部分是可以持久化的并且也是可以复制的。 但是如果function是存在于集群的几点中那么就有一些不一样的特性了。Redis function无法被自动地加载到集群中地所有节点而需要被管理员手动地将function加载到集群中地每个节点中。要加载Redis function在集群中地节点可以运行如下地命令 redis-cli --cluster-only-masters --cluster call host:port FUNCTION LOAD [REPLACE] function-code 如果运行命令 redis-cli --cluster add-node 那么这个时候集群中已经存在的节点会将已经加载地function自动地传播到新加入集训地节点 使用Redis Function的其他的注意事项 如果一个已经加载Redis Function的节点需要重启那么在重启之前建议先运行命令 redis-cli --functions-rdb 这样会将已经存在于节点上的Redis function存到一个RDB文件中当这个节点重启之后可以直接加载这个rdb文件就不需要再手工加载每一个function了大大地节省了时间和减少错误机率 本篇文章引用了部分Redis官方文档的例子 大家可以从链接去查看和运行一下。 https://redis.io/docs/interact/programmability/functions-intro/ 下一篇博客我们开始分析Redis function的源码让我们深入探讨一下这个Redis新特性内部是如何执行欢迎继续关注Redis Functions系列博客 最后感谢Redis社区的所有贡献者的努力工作及所有对Redis感兴趣的开发者的支持
http://www.zqtcl.cn/news/211782/

相关文章:

  • 杭州网站设计哪家公司好百度搜索网站显示图片
  • 新乡专业做淘宝网站房地产平面设计网站
  • 三亚谁做网站做网站导航的
  • 厦门酒店网站建设建设网站文案
  • 17网站一起做网店质量怎么样合肥网站建设维护
  • 建站公司外包怎么搭建手机网站m
  • 用ps做网站设计济南品牌网站制作便宜
  • 个人可做网站需要什么材料可以做3d电影网站
  • 温州网站建设专家网站推广软件推广
  • 24淘宝网站建设编程做网站
  • 公司网站模板怎么做自适应网站设计尺寸
  • 滨州正规网站建设价格简单网站制作
  • 创建网站平台电商系统源码
  • 滕州本地网站建设网站维护中模版
  • 商城类网站设计制作开发公司 张庆
  • seo擦边球网站宝安网站制作
  • 文山北京网站建设wordpress漂亮破解主题
  • 做网站需要什么证明嘛wordpress和自己写
  • 蚌埠市网站建设公司网站建设 技术 哪些
  • 网站收录查询临沂seovisual c 网站开发
  • 国际空间站vs中国空间站做网站在哪里接活
  • 怎样宣传网站营销外包公司
  • 工程网站模板制作教程具有价值的专业网站建设平台
  • 用wex5可以做网站吗邯郸seo快速排名
  • 高端品牌网站建设兴田德润可信赖网络运营方案怎么写
  • 新公司网站建设合肥关键词排名优化
  • 网站排名优化+o+m西安网络推广平台公司
  • 找网站建设公司需要注意什么常州网站建设公司好么
  • 不备案的网站很慢网站双线主机优势
  • 南京电子商务网站建设23个营销专业术语