redis使用的某种场景

在不改变外部数据库结构且前端需要根据条件查询用户姓名的情况下,利用Redis缓存所有用户姓名和名片ID的映射关系,提高查询效率。通过RedisTemplate的opsForHash()方法存取Map数据,避免重复调用外部接口。在使用中,根据需求选择使用姓名或ID作为键进行查询,支持前端的模糊查询功能。
摘要由CSDN通过智能技术生成

任务背景是这样的:
我们所有的数据库都是别人定义好的,我们不能改,然后数据库中没有userName这个字段,就是所有的用户姓名都不在数据库中存储。但是前端又要后端给他们返回。我们调用外部接口可以拿到所有用户姓名,但是前端不要所有的用户姓名,要根据条件查找。所以我就把所有的用户姓名和名片id联系到一起,为了提高效率,不用每次都调用接口,就存储redis。
在这里插入图片描述
这个代码之前是调用了外部接口,可以拿到一个json字符串,包含用户信息。
通过json的结构拿到一些想要的信息,再通过getString()这种方法,相当于通过key值拿到value值。
redisTemplate可以直接存放map,如上的方法:redisTemplate.opsForHash(),在用之前要先根据key值删除存储的数据哦~不然会根据key值查出来两个数据。抛异常。
我这里因为查出来的feedId和name都会用,都会根据其中一个去查找另一个。所以我把这两个都分别当成key和value存两次。这样拿到其中一个都可以去找另一个了。
在这里插入图片描述
上图:这是其中用到的一个地方,从redis中往外取,是前端的一个模糊查询,可能根据用户姓名去查找,但是用户姓名在数据库中根本都不存在。我只能通过用户姓名从redis中找到对应的feedId,然后通过feedId去找数据库。
在这里插入图片描述
上图:这是另一个地方,是知道feedId,但是要显示姓名,就需要通过feedId从redis中取出name。

redisTemplate.opsForHash().get(1,2);第一个值是redis的key值,第二个值是map中的key值。
这种模糊查询只能通过全名去查,不然就得遍历字符串,把名字的每一个字都存reids,这个倒是简单,就是不能同姓,不然就抛异常了,这就不现实,所以就干脆不要这个功能了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值