为什么我的项目中要使用Redis

转自:http://www.cnblogs.com/runningsmallguo/p/5871412.html

我知道有些地方没说到位,希望大神们提出来,我会吸取教训,大家共同进步!

  • 注册时邮件激活的部分使用Redis
  • 发送邮件时使用Redis的消息队列,减轻网站压力。
  • 使用Lucene.Net在进行分词时使用Redis消息队列和多线程来避免界面卡死等性能问题。

 

  • 请大家先思考一个问题:这个问题在大并发、高负载的网站中必须考虑!大家思考如何让速度更快。

三种方法:(1)数据库(2)页面静态化(3)Redis、Memcached

第二部分:Redis是什么

概述:redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合] hash(hash表))

2.1介绍:

  •  Redis是一个高性能的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
  • Redis 很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。(注: 摘自百度全科),1.主要是支持持久化2.支持更多数据结构 3.支持主从同步
  • Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

2.2  memcached和redis的比较:

2.3Redis的优势:

 

2.4Redis在windows下的安装:

注:关于Redis的安装网上有很多文章,讲的要比我的好,建议大家去看那些大神的文章,这里我只简单介绍一下。

(1)解压Redisbin.zip
(2)注册成windows服务
安装RedisWatch,会把Redis注册为一个系统服务,然后到安装RedisWatch的文件夹下找到watcher.config,修改下面的两个地方,如下图:
 
特别提醒:作为一个专业的程序员文件放置的路径不要有特殊字符、空格、文件名不要有中文,否则就加班吧。
当然了,正式的生产环境还是Linux的效率高,因为在Linux上是源码安装。
(3)启动redis服务
(4)使用netstat -anb | more

如果你看到有6379 在监听,说明ok(默认的端口号时候:6379)

 2.5Redis的数据结构:

前言: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/

第三部分:Redis如何使用

 3.1C#中如何使用Redis来解决邮箱激活的实效性。

首先思考个问题:为什么要进行邮件激活?激活码该存到哪里?(大家先思考,我不直接说,这样通过下面的例子你会体会的更深。)

原因:用户在注册的时候,虽然正则表达式能检查邮箱的格式是否正确,但是正则检查不了邮箱是否可用,于是让用户进行激活,就能避免用户填写一个不可用的邮箱。

 

传统方法的代码实现:

1)数据库表的设计:

在用户注册的表中添加一个字段:IsActive用来判断激活的状态。

该表用来存放激活码。


你可能感兴趣的:(redis)