ItGo.me - 专注IT技术分享

首页 > Redis > 用Redis打造URL缩短服务

用Redis打造URL缩短服务

时间:2016-08-28来源:网友分享 点击:

此文章的英文版本已首发于 CodeProject : 

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

代码在这里下载:

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(在  可以下载),对于Windows,我们可以调用这个命令启动Redis服务器

还可以启动一个monitor看一下

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

自定义URL正常

这个是随机生成的URL

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

 

此文章的英文版本已首发于 CodeProject : 

用Redis打造URL缩短服务

用Redis打造URL缩短服务   讨论


Redis客户端之Spring整合Jedis

1.下载相关jar包,并引入工程: jedis-2.4.2.jar commons-pool2-2.0.jar 2.将以下XML配置引入spring Xml代码 beanid="shardedJedisPool"class="redis.clients.jedis.ShardedJedisPool" constructor-argindex="0"ref="jedisPoolConfig"/ constructo...

超高性能 key-value 数据库 Redis

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使...

向着架构技术进军实践redis(一)

一个网站如何面对高容量大并发的压力,是架构师们要研究的事情。虽然目前我工作的站还没有达到这个水平,但是一些未雨绸缪的工作应该要开始了,给我们定的计划是在半年到一年时间,...

此文章的英文版本已首发于 CodeProject : 阅读文章之前,我建议你先下载源码,一边看文章,一边看代码。 代码在这里下载: Redis是什么东西 简单地说,Redis和memcached很像,也是一个内存数据库
------分隔线----------------------------