zoukankan      html  css  js  c++  java
  • openresty && hashids&& redis 生成短链接

    1. 原理
        a. 从redis 获取需要表示的短链接的id( redis incr)
        b. hashids 编码 id
        c. openresty  conteent_by_lua_block 阶段显示数据
     
    2. 安装以来的插件
     
       a. lua hashdis  使用  luarocks 注意需要先安装lua 开发包
       b. copy hashids lua 包 到 openresty 的lualib  方便调用
       c. redis 安装
     
       luarocks install hashids
    3. 代码
     nginx 配置格式
     
    location /test {
    content_by_lua_block {
    -- 此处为伪代码,需要自己处理,代码见下面的
    ngx.say(hashid)
    }
    }
    

      

     a. redis id 生成
    local hashids = require("hashids");
    local redis = require "resty.redis"
    local red = redis:new()
    local ids= 1;
    red:set_timeout(1000) -- 1 sec
    local ok, err = red:connect("127.0.0.1", 6379)
    if not ok then
    ngx.say("failed to connect: ", err)
    return
    end
    ids, err = red:incrby("ids", 1)
    if not ok then
    ngx.say("failed to set ids: ", err)
    return
    end
    -- ngx.say("set result: ", ok)
    local ok, err = red:set_keepalive(10000, 100)
    if not ok then
    ngx.say("failed to set keepalive: ", err)
    return
    end
    

      

    b. hashids 生成短链接
    local h = hashids.new("dalong")
    hash = h:encode(ids)
    ngx.say(hash)
    c. 访问
    http://ip:port/test 产看效果
     
     d. 次代码可以进行decode 获取id,中的来说还是比较方便的
    local hashids = require("hashids");
    local h = hashids.new("dalong")
    hash = h:decode("y71ZEKxm")
    print(hash[1])
     
    4. 扩展
      
    1. 实际系统如果使用还需要考虑redis 的高可用,安全,以及如何进行数据分析的问题
     
     
  • 相关阅读:
    iOS开发其他相关
    pch文件的创建与配置
    UI界面相关
    多人开发情况下的字符串本地化
    软件系统、硬件相关
    内存管理、单例
    Info.plist文件配置及注意事项
    UI控件相关宏定义
    字体
    3分钟实现iOS语言本地化/国际化(图文详解)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/7043596.html
Copyright © 2011-2022 走看看