Redis的安装以及在项目中使用Redis的一些总结和体(3)

redis指令不区分大小写,但是出于规范考虑,应该使用大写
redis中存放的键是区分大小写的.

第三部分:Redis如何使用

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

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

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

传统方法的代码实现:

1)数据库表的设计:

Redis的安装以及在项目中使用Redis的一些总结和体

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

Redis的安装以及在项目中使用Redis的一些总结和体

该表用来存放激活码。

代码实现:

BLL层代码:

/// <summary>
/// 2016-08-30
/// 注册的时候看看是否已经存在该用户
/// </summary>
/// <param></param>
/// <returns></returns>
public T_Users GetByUserName(string username)
{
T_UsersDAL userDal = new T_UsersDAL();
return userDal.GetByUserName(username);
}

/// <summary>
        /// 注册的时候看看邮箱是否已经被注册
        /// </summary>
        /// <returns></returns>
        public bool CheckEmailOnReg(string email)
        {
            T_UsersDAL userDal = new T_UsersDAL();
            T_Users user= userDal.CheckEmailOnReg(email);
            return user == null;
        }

DAL层代码:

/// <summary>
        /// 注册时候看看是否已经存在该用户名
        /// </summary>
        /// <param></param>
        /// <returns></returns>
        public T_Users GetByUserName(string username)
        {
            string sql = "select * from T_Users where UserName=@UserName";
            DataTable dt = SqlHelper.ExecuteQuery(sql, new SqlParameter("@UserName", username));
            T_Users userInfo = null;
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    userInfo = RowToUserInfoByDataRow(dr);
                }
            }
            return userInfo;
        }

/// <summary>
        /// 注册的时候检查用户的邮箱是否被注册
        /// </summary>
        /// <param></param>
        /// <returns></returns>
        public T_Users CheckEmailOnReg(string email)
        {
            string sql = "select * from T_Users where Email=@Email ";
            DataTable dt = SqlHelper.ExecuteQuery(sql, new SqlParameter("@Email",email));

T_Users userInfo = null;
            if (dt.Rows.Count>0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    userInfo=RowToUserInfoByDataRow(dr);
                }
            }
            return userInfo;
        }

UI层代码:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e7098e21afb944b607e5c5230c350d78.html