美文网首页
Lua Redis二次封装

Lua Redis二次封装

作者: BoatingTao | 来源:发表于2023-09-01 16:42 被阅读0次

对于 resty.redis 库的二次封装,便于使用。

--name: redis tools
--ctime: 2023/09/02 16:43
--author: 简书tao
--desc: redis function api

local redis = require "resty.redis"

local _M = {}

function _M.new()
  local red = redis:new()
  red:set_timeouts(1000, 1000, 1000)
  return setmetatable({red = red}, {__index = _M})
end

function _M:conn()
  local ok, err = self.red:connect("localhost", 6379)
  if not ok then
    ngx.log(ngx.ERR, "connect redis error: ", err)
    return
  end

  local ok, err = self.red:auth("redis@password")
  if not ok then
    ngx.log(ngx.ERR, "auth redis error: ", err)
    return
  end
  
  return true
end


function _M:get(key)
  local res, err = self.red:get(key)
  if not res then
    ngx.log(ngx.ERR, "get key failed: ", key, " err: ", err)
    return 
  end

  if res == ngx.null then
    ngx.log(ngx.ERR, "not found: ", key)
    return
  end
  return res
end


function _M:set(key, value, exptime)
  local res, err = self.red:set(key, value)
  if not res then
    ngx.log(ngx.ERR, "set key failed: ", key, " err: ", err)
    return
  end

  if exptime then
    local ok, err = self.red:expire(key, exptime)
    if not ok then
      ngx.log(ngx.ERR, "set key exptime failed: ", key, "  err: ", err)
      return 
    end
  end
  return true
end

function _M:incr(key)
  local res, err = self.red:incr(key)
  if not res then
    ngx.log(ngx.ERR, "incr key failed: ", key, " err: ", err)
    return
  end
  return res
end

function _M:persist(key)
  local res, err = self.red:persist(key)
  if not res then
    ngx.log(ngx.ERR, "persist key failed: ", key, " err: ", err)
    return
  end
  return true
end

function _M:close()
  local ok, err = self.red:set_keepalive(10000, 100)
  if not ok then
   ngx.log(ngx.ERR, "close redis error: ", err)
  end
end

return _M


整体思路很简单,就是对resty.redis 功能的二次封装。

相关文章

  • 分布式锁之redis-lua脚本

    目录 redis分布式锁,Lua,Lua脚本,lua redis,redis lua 分布式锁,redis set...

  • Redis第四天

    Redis+Lua语言限流实战 Redis+LUA语言限流流程图 Redis+Lua语言抢红包实战

  • 《redis学习》之lua

    Redis+Lua的好处 redis在2.6开始加入了lua脚本,使用lua脚本有如下好处: 减少网络开销。复合操...

  • Go中通过Lua脚本操作Redis

    为了在我的一个基本库中降低与Redis的通讯成本,我将一系列操作封装到LUA脚本中,借助Redis提供的EVAL命...

  • lua与redis pipeline

    lua Redis在2.6版引入了对Lua的支持 使用Lua可以非常明显的提升Redis的效率。 只要脚本所对应的...

  • Redis 脚本

    Redis 脚本 Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua ...

  • Redis 使用Lua脚本——基本使用

    Redis在2.6版引入了对Lua的支持。 使用Lua可以非常明显的提升Redis的效率。 Redis的一些命令 ...

  • Redis中调用Lua脚本阻塞

    在高并发系统中,redis的使用会比较频繁,lua脚本让redis的使用更加灵活。redis中使用lua脚本的好处...

  • Lua 教程

    要想学好redis就的会用lua Lua 教程 | 菜鸟教程

  • Redis - Lua脚本

    Redis - Lua脚本 Redis服务器在启动时,会对内嵌的Lua环境执行一系列修改操作,从而确保内嵌的Lua...

网友评论

      本文标题:Lua Redis二次封装

      本文链接:https://www.haomeiwen.com/subject/frmtvdtx.html