零碎小知识总结

Redis通常在项目中的使用场景

数据类型使用场景
String比如:要知道什么时候封锁一个IP地址,incrby命令
Hash存储用户等信息,hget(),hset(key,field,value)(通常不使用String类型存储)
List实现最新消息排行,还可以利用List的push命令,将任务存在list集合中,同时使用另一个命令pop,将任务从集合中取出,Redis-list数据类型来模拟消息队列(例如,电商中的秒杀可以采用这种方式完成秒杀活动)
Set特殊之处:可以自动排重。比如,微博中将每个人的好友存在set集合中,这样求两个人的共同好友的操作,只需求交集即可
Zset以某一个条件为权重进行排序。比如,京东:商品详情有一个综合排名,还可以按照价格进行排名

Elasticsearch(es)和solr的区别
背景.:都是基于Lucene搜索服务器基础之上开发,优秀的高性能的企业级搜索服务器。
为什么高性能呢?
因为基于分词技术构建的倒排索引的方式进行查询

区别:

  1. 当实时建立索引的时候,solr会产生阻塞,而es不会,所以es查询性能高于solr
  2. 在不断动态添加数据的时候,solr的检索效率变得低下,es没有什么变化
  3. solr利用zookeeper进行分布式管理,es自身带有分布式系统管理功能。solr一般都是部署到web服务器上,比如Tomcat,启动Tomcat的时候需要配置Tomcat与solr的关联(solr的本质是一个动态的web项目)
  4. solr支持个更多的格式数据,比如,xml、json、csv等,es仅支持json文件格式
  5. solr是传统搜索应用的有力解决方案,es更适用于新兴的实时搜索应用(单纯的对已有数据进行检索的时候,solr效率更好)
  6. solr官网提供的功能更多,es本身更注重于核心功能,高级功能需要第三方插件提供

单点登录实现过程
单点登录简单说就是分布式系统中(前提)一处登录多处使用
一个简单的web项目也可以使用单点登录,但是没必要

流程:
在这里插入图片描述
例子:参观动物园
检票员=认证中心

  1. 直接进动物园会被检票员拦下(检查是否有门票),没有,则去售票处买票
    登录=买票
  2. 带着票准备进入动物园,检票员check,有票
    票=token
  3. 有票就可以任意参观动物园

京东:单点登录是将token放入到cookie中的。将浏览器的cookie禁用,则登录京东失败

消息队列在项目中的使用
背景:在分布式系统中如何处理高并发?
由于在高并发的环境下,来不及同步处理用户的请求,则会导致请求发生阻塞,比如,大量的insert,update之类的请求同时到达数据库,直接导致无数的行锁,表锁,甚至会导致请求堆积很多,从而触发too many connection错误。
使用消息队列中的异步通信可以解决。

  1. 异步
    在这里插入图片描述

  2. 并行
    在这里插入图片描述

  3. 排队
    在这里插入图片描述
    消息队列在电商中使用场景
    在这里插入图片描述
    消息队列的弊端:消息的不确定性
    可以使用延迟队列,轮询技术来解决该问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值