From 672f3d40be83d9e380fd7be4b674d5e8d5fa36de Mon Sep 17 00:00:00 2001 From: HuabingZhao Date: Tue, 25 Jul 2017 15:18:33 +0800 Subject: Divide the MSB source codes into two repos Change-Id: Ie76d545b214a8ce5191f215350a623e1529983d9 Issue-id: MSB-5 Signed-off-by: HuabingZhao --- .../openresty/nginx/luaext/lib/tools/db_cache.lua | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 openresty-ext/src/assembly/resources/openresty/nginx/luaext/lib/tools/db_cache.lua (limited to 'openresty-ext/src/assembly/resources/openresty/nginx/luaext/lib/tools/db_cache.lua') diff --git a/openresty-ext/src/assembly/resources/openresty/nginx/luaext/lib/tools/db_cache.lua b/openresty-ext/src/assembly/resources/openresty/nginx/luaext/lib/tools/db_cache.lua new file mode 100644 index 0000000..7f40590 --- /dev/null +++ b/openresty-ext/src/assembly/resources/openresty/nginx/luaext/lib/tools/db_cache.lua @@ -0,0 +1,54 @@ +--[[ + + Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--]] + +-- db cache over LRUCache, used within one worker processes +local _M = {} +_M._VERSION = '1.0.0' + +local lrucache = require "resty.lrucache" + +local EMPTY_DATA = '_EMPTY_' + +-- we need to initialize the cache on the lua module level so that +-- it can be shared by all the requests served by each nginx worker process: +local cache,err = lrucache.new(200) -- allow up to 200 items in the cache +if not cache then + return ngx.log(ngx.ERR,"failed to create the cache: " .. (err or "unknown")) +end + +function _M.get(key) + return cache:get(key) +end + +function _M.set(key,value) + return _M:set(key, value, nil) +end + +function _M.set(key,value,ttl) + if not value then + value = EMPTY_DATA + end + return cache:set(key, value, ttl) +end + +-- check if the data returned by get() is considered empty +function _M.is_empty(data) + return data == EMPTY_DATA +end + +return _M \ No newline at end of file -- cgit 1.2.3-korg