效果如下:

第一种形式字符串存储 (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; }
