怎么用Python写一个图片迁移脚本?

这里是修真院后端小课堂

大家好,我是IT修真院深圳一枚正直纯洁善良的JAVA程序员。

今天给大家分享一下,官网JAVA任务7里面的知识点:怎么用Python写一个图片迁移脚本?

1 背景介绍

随着企业数据量的增多,Redis不论作为数据存储或是缓存,它的数据量也会逐渐增多,虽然Redis的速度非常可观,但随着其中的数据量的庞大,并且仅仅在一个设备或是一个Redis实例中,其存取速度也会大打折扣,所以我们需要在不同的设备或服务器上,搭建多个Redis实例仓库,将原来的Redis的所有的keys分发到各个服务器的Redis上,这就是现在所谓的Redis集群(Redis Cluster)

2.知识剖析
2.1REDIS-CLUSTER原理
Redis-Cluster中的节点是可以相互通信的,客户端可以通过访问任意节点都可以访问集群内的数据

1、Redis-Cluster所有节点之间通过PING-PONG机制进行关联,内部使用二进制协议优化传输速度和带宽,所以Redis的传输特别快。

2、Redis-Cluster检测节点是否宕机有它独特的机制。

3、客户端可以直接连接Redis节点,不需要连接所有节点,连接集群中任何一个可用节点即可。

4、Redis-Cluster把所有的节点映射到slot上,Cluster主要负责维护node<->slot<->value

5.Redis集群中内置了16384个哈希槽,Cluster会给不同的节点分配哈希槽,不同的节点分配编号在0-16383之间的哈希槽,也就是将哈希槽映射到redis集群的节点。Cluster主要负责维护节点-哈希槽-值之间的关系。

2.2REDIS-CLUSTER容错机制
Redis-Cluster检测节点是否宕机时采用投票的方式。节点之间通过PING-PONG机制联系,如果有一半以上的master节点在默认的回应时间内联系某个节点失败,则会认为该节点已经宕机了。主节点宕机后,从节点会暂时作为主节点来接替主节点的工作,但并不总是能顶替。当出现以下两种情况时,可以认为Redis-Cluster已经宕掉了:

1、如果集群中的主节点宕机后,当前master节点没有slave节点,则集群进入宕机状态,也就是集群的slot映射不成功。

2、如果集群中的master节点超过一半以上宕机,无论是否有slave节点,集群都会处于宕机状态

2.3概括
Redis集群采用哈希槽进行节点映射,映射时会采用一定的算法。Cluster会根据节点的数量来分配映射的哈希槽,每个节点占据一定个数的哈希槽。Redis-Cluster的节点采用主备模式,当客户端向Redis的某个master节点存储数据时,master节点也会把数据同步到slave节点,保持master节点和slave节点的数据一致。

3.常见问题

4.解决方案

在一台机器上用多个端口启动多个redis服务来模拟集群

5.编码实战

task6_redis.redis_cachedorg.apache.log4j.Loggerorg.springframework.stereotype.task6_redis.dao.PositionStuDaotask6_redis.pojo.PositionStutask6_redis.util.RedisUtiljavax.annotation.java.util.ArrayListjava.util.ListPositionStuRedisImpl PositionStuRedis {
(= )
PositionStuDao (= )
RedisUtil Logger =Logger.(PositionStuRedisImpl.)List () {
.info()List list =.lGet(-).info(list)(list.size()==){
.info().saveRedisCached()list =.lGet(-).info(list)}
List positionStus =ArrayList<>()(Object i:list){
.info(i.toString())PositionStu p =(PositionStu) .get(i.toString()).info(+p.toString())positionStus.add§}
positionStus}

Integer (PositionStu positionStu) {
    .info()Integer i=.savePosition(positionStu)(i>){
        .del().saveRedisCached()}
    i}

PositionStu (Integer id){
    PositionStu positionStu=(.hasKey(id.toString())){
        .info()(PositionStu) .get(id.toString())}{
        .info()positionStu =.queryPos(id)(positionStu!=){
            .info().set(positionStu.getPosId().toString()positionStu)}{
            .info().set(id.toString())}
    }
    (PositionStu) .get(id.toString())}


(){
    .info()List<PositionStu> positionStus =.goodShow().info(positionStus)(positionStus.size()!=){
        (PositionStu p:positionStus){
            .info(+p)b =.set(p.getPosId().toString()p).info(+b)(b) {
                .info().lSet(p.getPosId())}
        }
    } {
        .set()}
    .info(+.lGet(-))}

6.扩展思考:
redis集群有很多中方案,而且redis集群在企业中运用也比较广注
7.参考文献
CSDN、百度百科
8 更多讨论
总结:
1)为什么servlet里面的有些对象不能满足那个需求?
首先我们来分析业务需求,在页面显示你的账号,可以清楚的知道多个请求都会显示,所以Resquest,response不行,因为它们是一个请求对应的一个生命周期。config和组件servlet是一对一的关系,而登录和查询是不同的servlet所以数据不共用,而且config没有读取变量的能力。tomcat内只有一个对象,context跟servlet是一多的关系,而每个人登录传递的账号都是code=“zhangsan”的数据,其中key值都是一样,存入context有冲突。
2)什么是cookie和session?
cookie存在游览器器上,服务器压力小,但数据不安全(顾客可以改会员卡里面的信息)
-session存在服务器上,服务器压力大,但数据安全。
3)什么场景适用于session?什么场景适用于cookie?
-重要数据存session
-一般数据存cookie

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值