• Redis打造URL缩短服务


    用Redis打造URL缩短服务

     

    此文章的英文版本已首发于 CodeProject : Building a simple URL shorten service with Redis

    阅读文章之前,我建议你先下载源码,一边看文章,一边看代码。

    代码在这里下载:http://www.codeproject.com/KB/NoSQL/819235/MicroUrl.zip

    Redis是什么东西

    简单地说,Redis和memcached很像,也是一个内存数据库,但是,Redis可以把数据保存到硬盘,因此,Redis不但可以做缓存,还可以作为一个NoSQL数据库。

    制作Web部分

    首先,以no authentication方式在Visual Studio里面创建一个ASP.NET MVC项目

    然后新建一个类来存储URL数据

    ExpireMode 是一个自定义的枚举,我们先定义他

    然后创建主页

    做出来大概是这样

    值得一提的是 HtmlHeper 的 EnumDropDownListFor方法,这个方法是在 ASP.NET MVC 5.2中新增的,在以前的版本中,我们要自己创建这些Item,非常麻烦,现在,我们可以用这个方法直接生成,用attribute指定显示名。

    然后弄一个成功页面,挺简单的。

    将数据保存到Redis

    有了上面这些准备后,我们就可以开始写关于Redis的代码了。

    首先你要安装 ServiceStack.Redis 这个Nuget包,如果需要一个有强名称的DLL,可以装这个: ServiceStack.Redis.Signed

    然后我们用 using 语句using一个创建好的client, 然后生成一个用于 MicroUrlItems 的 typed client

    在向Redis保存对象之前,对象需要有一个Primary Key,这里我们用 ServiceStack.DataAnnotations.PrimaryKey 这个attribute进行标记,这个属性最终是这样子

    如果用户没指定缩短后的URL,那就随机生成一个

    这是一个简单的生成算法

    然后就可以保存了

    最后一步,如果用户指定了有效期,我们要在Redis里面设置他的expire

    从Redis中读取数据

    我们用上面的方法创建一个typed client,然后在里面查找,如果找到,返回HTTP 302,在URL被访问后,如果他的ExpireModeByLastAccessed,我们要进行renew。

    还有一件事,就是这个Action里面的Route attribute默认是不参与工作的,我们要把他map上去

    终于好了

    在运行网站之前,我们需要先启动Redis(在 http://redis.io/download 可以下载),对于Windows,我们可以调用这个命令启动Redis服务器

    还可以启动一个monitor看一下

    然后启动网站,试下我们的功能

    自定义URL正常

    这个是随机生成的URL

    在执行这些操作后,我们可以在monitor里面看到具体有哪些Redis命令被执行了

    此文章的英文版本已首发于 CodeProject : Building a simple URL shorten service with Redis

  • 相关阅读:
    sqlmap注入教程
    Burp Suite使用详解一
    手工注入基本思路
    搜索型注入漏洞手工注入过程
    龙灵:特邀国内第一讲师“玄魂” 在线培训黑客神器Kali Linux
    linux grep命令详解
    linux ps命令详解
    linux DNS服务
    linux用户与组管理命令的基本操作
    canvas绘制坐标轴
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3979123.html
Copyright © 2020-2023  润新知