视频付费网站建设网站怎样做反向链接
news/
2025/10/5 9:38:26/
文章来源:
视频付费网站建设,网站怎样做反向链接,seo优化工具推荐,做新媒体文的网站目录
lua_shared_dict
lua-resty-lrucache
新建
设置
获取
删除
综合使用案例
计数
全部刷新 lua_shared_dict 语法#xff1a; lua_shared_dict 名称 大小 默认值#xff1a; 否 上下文#xff1a; http 阶段#xff1a; 取决于使用情况
声明一…目录
lua_shared_dict
lua-resty-lrucache
新建
设置
获取
删除
综合使用案例
计数
全部刷新 lua_shared_dict 语法 lua_shared_dict 名称 大小 默认值 否 上下文 http 阶段 取决于使用情况
声明一个共享内存区域 name作为基于 shm 的 Lua 字典的存储ngx.shared.name。共享内存区域始终由当前 Nginx 服务器实例中的所有 Nginx 工作进程共享。该size参数接受大小单位例如k和m http {lua_shared_dict shared_data 1;...} local shared_data ngx.shared.shared_data local i shared_data:get(i) if not i then i 1 shared_data:set(i, i) ngx.say(lazy set i , i, br/)
end i shared_data:incr(i, 1) ngx.say(i, i, br/)lua-resty-lrucache
Lua 实现的一个简单的 LRU 缓存适合在 Lua 空间里直接缓存较为复杂的 Lua 数据结构它相比 ngx_lua 共享内存字典可以省去较昂贵的序列化操作相比 memcached 这样的外部服务又能省去较昂贵的 socket 操作 LRU 缓存完全驻留在 Lua VM 中并受 Lua GC 的约束。因此不要期望它能够跨操作系统进程边界共享。好处是您可以缓存任意复杂的 Lua 值例如深度嵌套的 Lua 表而无需序列化的开销与 的ngx_lua共享字典 API一样。缺点是您的缓存始终仅限于当前操作系统进程即当前 Nginx 工作进程。在init_by_lua的上下文中使用这个库并没有多大意义 因为缓存不会被任何工作进程共享除非你只是想用预定义的项目“预热”缓存这些项目将由工人通过fork()。 新建 syntax: cache, err lrucache.new(max_items [, load_factor]) 创建一个新的缓存实例。失败时返回nil一个描述错误的字符串。
该max_items参数指定此缓存可以容纳的最大项目数。
该load-factor参数指定内部使用的基于 FFI 的哈希表的“负载因子” resty.lrucache.pureffi默认值为0.5即50%如果指定了负载因子则其将被钳制在 的范围内[0.1, 1]即如果负载因子大于 1则其将饱和至 1同样如果负载因子小于0.1则其将被钳制至0.1。这种说法只对 有意义 resty.lrucache.pureffi。
设置 syntax: cache:set(key, value, ttl?, flags?) 设置一个带有值和过期时间的键。
当缓存已满时缓存将自动驱逐最近最少使用的项目。
可选ttl参数指定过期时间。时间值以秒为单位但您也可以指定小数部分例如0.25。 nil ttl参数意味着该值永远不会过期这是默认值。
可选flags参数指定与要存储的项目关联的用户标志值。稍后可以将其与该物品一起检索。用户标志在内部存储为无符号 32 位整数因此必须指定为 Lua 数字。如果未指定标志将具有默认值0。此参数已添加到v0.10版本中。
获取 syntax: data, stale_data, flags cache:get(key) 使用键获取值。如果key在缓存中不存在或者已经过期nil将会被返回。
从 开始v0.03过时数据也会作为第二个返回值如果有返回。
从 开始v0.10与存储项关联的用户标记值也作为第三个返回值返回。如果没有为某个项目指定用户标志则其默认标志将为0。
删除 syntax: cache:delete(key) 从缓存中删除由键指定的项目。
综合使用案例
新建文件cache.lua cd /usr/local/openresty/lualib
mkdir my
cd my
vim cache.lua #内容写下面lua文件代码 lua文件代码自定义函数 local _M {}lrucache require resty.lrucachec, err lrucache.new(200) -- allow up to 200 items in the cache
ngx.say(countinit)if not c thenerror(failed to create the cache: .. (err or unknown))
endfunction _M.go()count c:get(count)c:set(count,100)
ngx.say(count, count, --br/)if not count then c:set(count,1)ngx.say(lazy set count , c:get(count), br/) elsec:set(count,count1)ngx.say(count, count, br/)
endend
return _Mnginx配置文件引用lua文件 #注释掉http中的代码热部署否则lua文件中每次都会new一个新对象
#lua_code_cache off;
lua_shared_dict shared_data 1m;location /lua {...#content_by_lua_file lua/hello.lua; #需注释否则与lua_block冲突content_by_lua_block {require(my/cache).go()}
}计数 syntax: count cache:count() 返回当前存储在缓存中的项目数包括 过期项目如果有。
返回的count值将始终大于或等于 0 且小于或等于size给定的参数cache.new。
该方法已添加到v0.10版本中。 全部刷新 syntax: cache:flush_all() 刷新当前缓存实例中的所有现有数据如果有。这是一个O(1)操作应该比创建全新的缓存实例快得多。但请注意flush_all()的方法resty.lrucache.pureffi是一个 O(n)操作。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928077.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!