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