转自:http://www.cnblogs.com/runningsmallguo/p/5871412.html
我知道有些地方没说到位,希望大神们提出来,我会吸取教训,大家共同进步!
注册时邮件激活的部分使用Redis发送邮件时使用Redis的消息队列,减轻网站压力。使用Lucene.Net在进行分词时使用Redis消息队列和多线程来避免界面卡死等性能问题。请大家先思考一个问题:这个问题在大并发、高负载的网站中必须考虑!大家思考如何让速度更快。
三种方法:(1)数据库(2)页面静态化(3)Redis、Memcached
概述:redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合] hash(hash表))
注:关于Redis的安装网上有很多文章,讲的要比我的好,建议大家去看那些大神的文章,这里我只简单介绍一下。
(1)解压Redisbin.zip (2)注册成windows服务 安装RedisWatch,会把Redis注册为一个系统服务,然后到安装RedisWatch的文件夹下找到watcher.config,修改下面的两个地方,如下图: 特别提醒:作为一个专业的程序员文件放置的路径不要有特殊字符、空格、文件名不要有中文,否则就加班吧。 当然了,正式的生产环境还是Linux的效率高,因为在Linux上是源码安装。 (3)启动redis服务 (4)使用netstat -anb | more如果你看到有6379 在监听,说明ok(默认的端口号时候:6379)
前言:Redis中存储的数据都为字符串格式的。下面来分别介绍Redis中常用的数据结构。
string数据结构太简单了,略过。
list数据结构概述: 什么是list ,list是一种数据结构,可以当做队列和栈来使用。
当你从左边添加数据,再从左边取数据,就模拟出栈;当你从右边添加数据,再从左边取数据,就模拟出队列。因此Redis真的很强大,看到栈和队列这样的数据结构,你难道就不激动吗?这样的数据结构太TM好了,能帮我们处理很多棘手的问题。这里我先卖个关子,下面会介绍我在项目中是如何使用Redis解决棘手的问题。
set集合和list结构差不多,这里不再啰嗦。
下面就是操作set的一些命令。
hash数据结构图中的"user:100"就相当于key,而它所指向的类似于表结构的数据就是value,这样的数据结构有利于存储对象数据。也是非常常用的方法。
注意:
redis指令不区分大小写,但是出于规范考虑,应该使用大写 redis中存放的键是区分大小写的.
Redis常用命令文档:http://redis.readthedocs.io/en/2.6/
3.1C#中如何使用Redis来解决邮箱激活的实效性。
首先思考个问题:为什么要进行邮件激活?激活码该存到哪里?(大家先思考,我不直接说,这样通过下面的例子你会体会的更深。)
原因:用户在注册的时候,虽然正则表达式能检查邮箱的格式是否正确,但是正则检查不了邮箱是否可用,于是让用户进行激活,就能避免用户填写一个不可用的邮箱。
传统方法的代码实现:
1)数据库表的设计:
在用户注册的表中添加一个字段:IsActive用来判断激活的状态。
该表用来存放激活码。
