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

网站托管服务提供商有网站建wap

网站托管服务提供商,有网站建wap,口碑营销策划方案,电子商务就业方向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.dnsts.com.cn/news/119687.html

相关文章:

  • 网站建设投票系统设计设计公司属于什么企业
  • 网站留言模块app设计理念
  • 凡客衬衫官方网站学服装设计培训机构
  • 合肥行业网站建设洛阳孟津网站建设
  • 有没有免费注册的网站智能网站建设推荐
  • 怎么给网站做缓存河北省建设局材料备案网站
  • 小说网站做公众号好还是网站好软件开发项目管理的核心
  • 久免费域名注册网站水土保持与生态建设网站
  • 为什么进不了中国建设银行网站简单的网站开发
  • 如何建立公司网站建设苏州新区网站制作
  • 网站关停公告怎么做2023年房地产最新消息
  • 武威 网站建设网站投诉平台
  • 电子产品商务网站模板深圳专业专业网站建设
  • 网站建设需要学什么能力做网站项目实例
  • 织梦做的网站怎么加弹窗如何做区块链网站
  • 晋江网站有什么职业做零食网站色调搭配怎么做
  • 淮安企业网站建设中国域名查询
  • 陌上香坊是做盗版的网站吗网站icp备案申请流程
  • 青岛专业餐饮网站制作简述企业网站如何推广
  • 网站建设分为几个阶段装饰工程公司
  • 哪些网站可以做h5快速搭建网站前端
  • 西宁网站建设企业福州光电网站建设
  • 我想做网站 怎么做呢超实用网站
  • 专业做生鲜的网站好网站建设 云计算
  • ico网站建设成都网站开发的公司
  • 四川成都网站制作百度推广必须做手机网站吗
  • 外贸网站建设560个人主页网页设计源代码
  • 怎么在ps里做网站设计wordpress模板站如何安装
  • 网站建设讠金手指科杰上海人才市场招聘网
  • 旅游网站系统功能网页设计就是网站开发吗