Redis-Demo存储用户信息


效果如下:

第一种形式字符串存储 (key为主键Id 字符串为用户信息)

实现代码

  /// <summary>
        /// 根据用户Id获取用户信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnRead_Click(object sender, EventArgs e)
        {
           //1-获取输入框用户Id
            string userid = txtUserInfo.Text.Trim();
            if (string.IsNullOrWhiteSpace(userid))
            {
                MessageBox.Show("用户id不能为空");
                return;
            }
            //2-读取redis用户信息
            Sys_User obj = new Sys_User();
            bool isConnect = true;
            try
            {
                obj = RedisCache.Default.StringGet<Sys_User>(userid, RedisDb.DbDefault);
            }
            catch (Exception ex)
            {
                isConnect = false;
            }           
            
            UserBusiness userBusiness = new UserBusiness();
            //3-redis用户信息不存在,读取数据库
            if (obj == null && isConnect)
            {
                var userInfo = userBusiness.QueryUserInfo(userid);
                if (userInfo != null)
                {
                    RedisCache.Default.StringSet<Sys_User>(userid, userInfo);
                    txtUserDetail.Text = "姓名:" + userInfo.Name;
                }
            }
            //4-redis存在的有数据
            else {
                txtUserDetail.Text ="姓名:"+ obj.Name;
            }
        }

stringGet方法(一个公共类里面的,粘贴了部分代码)

        /// <summary>
        /// 获取一条String类型的信息
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="db">默认数据库-读取第几个数据库</param>
        /// <returns></returns>
        public T StringGet<T>(string key, RedisDb db = RedisDb.DbDefault)
        {
            string value = GetDatabase(db).StringGet(key);
            if (string.IsNullOrWhiteSpace(value))
            {
                return default(T);
            }
            return Deserialize<T>(value);
        }

        /// <summary>
        /// 反序列化值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        private T Deserialize<T>(string value)
        {
            return JsonConvert.DeserializeObject<T>(value);
        }

 

第二种形式List方式存储(key-类似于表名,数据为用户列表)

具体实现代码

        private void btnOpeList_Click(object sender, EventArgs e)
        {
            //1-获取输入框用户Id
            string userid = txtUserInfo.Text.Trim();
            if (string.IsNullOrWhiteSpace(userid))
            {
                MessageBox.Show("用户id不能为空");
                return;
            }

            //2-读取redis用户信息
            Sys_User obj = new Sys_User();
            bool isConnect = true;
            try
            {
                //判断列表里面是否有当前用户
                List<Sys_User> listUser = RedisCache.Default.ListRange<Sys_User>("UserInfo",0,-1,RedisDb.DbTwo);
                obj = listUser?.Where(it => it.Id == userid).FirstOrDefault();
            }
            catch (Exception ex)
            {
                isConnect = false;
            }

            UserBusiness userBusiness = new UserBusiness();
            
            //3-redis用户信息不存在,读取数据库
            if (obj == null && isConnect)
            {
                var userInfo = userBusiness.QueryUserInfo(userid);
                if (userInfo != null)
                {
                    RedisCache.Default.ListRightPush<Sys_User>("UserInfo", userInfo, RedisDb.DbTwo);
                    txtUserDetail.Text = "姓名:" + userInfo.Name;
                }
            }
            //4-redis存在的有数据
            else
            {
                txtUserDetail.Text = "姓名:" + obj.Name;
            }
        }
        /// <summary>
        /// 从List集合中获取数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="start">开始索引</param>
        /// <param name="stop">结束索引(-1:从start到所有)</param>
        /// <param name="db">数据库</param>
        /// <returns></returns>
        public List<T> ListRange<T>(string key, long start = 0, long stop = -1, RedisDb db = RedisDb.DbDefault)
        {
            List<T> result = new List<T>();
            RedisValue[] values = GetDatabase(db).ListRange(key, start, stop);
            foreach (string value in values)
            {
                result.Add(Deserialize<T>(value));
            }
            return result;
        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM