当前位置: 首页 > news >正文

中交上航建设网站哈尔滨的互联网公司

中交上航建设网站,哈尔滨的互联网公司,做一级域名网站多少钱,二手书网站开发设计Redis的数据类型Hash使用场景 常见面试题#xff1a;redis在你们项目中是怎么用的#xff0c;除了String数据类型还使用什么数据类型#xff1f; 怎么保证缓存和数据一致性等问题… Hash模型使用场景 知识回顾#xff1a; redisTemplate.opsForHash() 方法是 Redis 的 …Redis的数据类型Hash使用场景 常见面试题redis在你们项目中是怎么用的除了String数据类型还使用什么数据类型 怎么保证缓存和数据一致性等问题… Hash模型使用场景 知识回顾 redisTemplate.opsForHash() 方法是 Redis 的 Hash哈希数据结构的操作模板方法。它返回一个 HashOperations 实例可以使用该实例执行对哈希数据结构的各种操作如添加、删除、获取元素、获取全部元素等。 使用 redisTemplate.opsForHash() 方法进行哈希操作的示例如下 // 添加元素到哈希 redisTemplate.opsForHash().put(myhash, key1, value1); redisTemplate.opsForHash().put(myhash, key2, value2);// 获取哈希中指定的元素 String value1 (String) redisTemplate.opsForHash().get(myhash, key1);// 获取哈希中所有元素 MapObject, Object allEntries redisTemplate.opsForHash().entries(myhash);// 删除哈希中指定的元素 redisTemplate.opsForHash().delete(myhash, key1);// 判断哈希中是否存在指定的元素 boolean exist redisTemplate.opsForHash().hasKey(myhash, key1);场景使用场景 1对象缓存 比如存储用户信息 一个字段对应多个属性 id:1 、name:老许 、 age:18 、 sex:0 、 hobby:java … 2、同一个用户在不同所属系统的待办个数统计 代码实现 应用场景一保存用户的信息 h:user_key_prefix account hkacount hvuser 引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency项目启动时候自动将数据库用户信息保存到redis中 package com.xx.xx.xx.config;import com.alibaba.fastjson2.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.StringRedisTemplate;import javax.annotation.PostConstruct; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors;/*** author psd*/ Slf4j Configuration public class SysUserConfig {Autowiredprivate SysUserService sysUserService;Autowiredprivate StringRedisTemplate redisTemplate;Autowiredprivate RedisOperationUtils redisOperationUtils;PostConstructpublic void init() {// 查询所有的用户信息ListSysUserEntity userEntityList sysUserService.queryAllSysUser();ListString accountList userEntityList.stream().map(SysUserEntity::getAccount).collect(Collectors.toList());// 清除缓存中的数据 accountList.stream().forEach(account - redisTemplate.delete(redisOperationUtils.USER_KEY_PREFIX account));// 重新新增缓存中的数据userEntityList.stream().forEach(userEntity - {// 设置一个随机过期时间 4 ~ 8小时redisTemplate.opsForHash().put(redisOperationUtils.USER_KEY_PREFIX userEntity.getAccount(), userEntity.getAccount(),JSON.toJSONString(userEntity));redisTemplate.expire(redisOperationUtils.USER_KEY_PREFIX userEntity.getAccount(), 3600 redisOperationUtils.random.nextInt(4 * 3600),TimeUnit.SECONDS);});}} 配置类 Component public class RedisOperationUtils {/*** 用户信息redis中的key*/public final String USER_KEY_PREFIX rbac:user:;public final Random random new SecureRandom(); }项目中任意获取的可以 Testpublic void test03(){Object o redisTemplate.opsForHash().get(redisOperationUtils.USER_KEY_PREFIX Lin , Lin);SysUserEntity entity JSON.parseObject((String) o, SysUserEntity.class);System.out.println(entity entity);}可能存在疑问点 1、为啥没有用String类型 同样可以满足这个是考虑到有些字段可能会改动项目在初期阶段可能某些字段会修改添加新增包括删除 总和优先考虑Hash模型利于维护不用单个字段进行修改 删除等操作 2、如果数据有修改的情况下你是怎么保证数据类型一致性 先删除redis中的数据再写数据到mysql 再删除redis中数据 优点细节有以下几处 1、设置过期时间时候没有采用 每次new Random()而是放到一个工具类里面节约内存 2、使用Random random new SecureRandom(); 是安全的 3、采用随机过期时间随机性比较好 减少redis的内存使用 应用场景二保存用户的信息 h:phoneNum hktypeStr hvcount // h:phoneNum hktypeStr hvcount // 对应唯一标识手机号: 139xxxxxxxx hk:数据来源类型 hv:个数 Overridepublic void insertTask() {redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 18900001111, xj, 10);redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 18900001111, kd, 8);redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 18900001111, yh, 6);redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 15665440000, xj, 2);redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 15665440000, kd, 3);redisTemplate.opsForHash().put(redisOperationUtils.KEY_PREFIX 15665440000, yh, 12);}再获取时候 // 获取的taskCountStr 注意是个字符串需要做类型转换封装成vo给前端用于渲染 具体业务具体分析String taskCountStr (String) redisTemplate.opsForHash().get(redisOperationUtils.KEY_PREFIX 153xxxxxxxx, taskEnum.getOwningSystemCode());喜欢我的文章的话点个阅读或者点个点赞是我编写博客的动力持续更新中
http://www.hkea.cn/news/14582637/

相关文章:

  • 网站建设开源做门户网站主要技术哪一块
  • 扎实做好机构编制网站建设东莞网站建设信科
  • 湛江模板建站公司中国消防公众号关注
  • 如何自学3d建模搜索引擎优化简称
  • sns网站设计国内最好的网站建设公司
  • 怎样用vps做网站六盘水市城乡建设局网站
  • 网站建设的一些原理网站友链是什么情况
  • 长春公司推广网站爱站关键词挖掘软件
  • 可以做哪些有趣的网站网站推广广告语
  • 用上海注册的公司建的网站兼职做一篇微信的网站
  • 网站软件定制开发公司响应式网站管理系统
  • 网站自己做还是用程序wordpress备案
  • 如何建单页网站机电建设工程施工网站
  • 矿区网站建设网站审核时间
  • 找人给公司做网站去哪找二七郑州网站建设
  • 丹阳做公司网站的哪个网站可以做兼职笔译
  • 成都做网站的公司对电子商务网站与建设的心得
  • 如何网站专题策划建设 网站工作汇报
  • 手机咋建网站沈阳高端网站
  • 网站主持人长沙建网站的
  • 做网站哪个公司好 快选宁陵建站宝湖南天辰建设责任公司网站
  • 潍坊优化网站排名食品网站设计
  • 通过主机名访问网站做网站导航站的注意点
  • seo是东莞企业网站排seo免费挣钱最快的游戏
  • 网站标题栏做多大网站建设工作都包括哪些方面
  • 网站建设简介电话石家庄效果图设计
  • 广州市建设工程安监站网站福州建设项目管理公司
  • 个人是否可以申请持有网站网站快速排名是怎么做的
  • 湛江免费制作网站杭州营销型网站建设工作室
  • 县科协微网站建设网站建设与规划的文献