当前位置: 首页 > Linux

京淘项目day12

时间:2023-04-06 03:57:33 Linux

1.实现数据库高可用1.1构建策略1.1.1问题描述如果按照如下配置实现数据库代理,如果数据库主机挂掉,会直接影响整个程序的执行,所以需要实现高可用机制。高可用实现的问题:如果数据库高可用,可以自动切换数据库。由于用户直接操作从库,当主库启动后发现数据不一致,就会停止主从同步状态。1.1.2双机热备(双主模式)说明:通过数据库双主模式可以实现数据库的高可用。双主模式本质上就是一台主机,相互备份。1.1.3双机热备实施前的配置:host:192.68。126.129从库:192.168.126.130当前配置主机:192.168.126.130从库:192.168.126.1291)。查看主库状态2).实现数据的主从构建1.2数据库高可用实现1).编辑配置文件select12).上传配置文件:3).重启mycat服务器1.3数据库高可用测试1.启动服务器,测试mysql检查数据库是否正常。2、关闭数据库主库,再次查看用户操作是否正常。3).修改数据库中的内容并重启主数据库,检查数据是否同步1.4检查端口占用情况2Redis缓存学习2.1优化现有架构说明:缓存服务器可以有效提高用户的访问效率注意事项:1.缓存数据结构只要使用K-V结构即可因为key是唯一的那么结果一定是一样的...2.缓存中的数据不能一直保存,需要定期优化内存数据。.4.如果缓存的跑步数据在内存中,如果出现断电/停机,内存数据会直接丢失。实现内存数据(磁盘)的持久化操作2.2Redis缓存服务器官网Redis是一个开源的(BSD许可),一个内存数据结构存储系统,可以作为数据库、缓存、消息中间件使用。它支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合(sortedsets)和范围查询、位图、hyperloglogs和地理空间(geospatial)索引半径查询。Redis内置了复制、LUA脚本(Luascripting)、LRU驱动事件(LRUeviction)、事务(transactions)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)。Redis安装1).解压缩redis文件2)。移动文件并修改文件3).安装Redis命令一:make命令二:makeinstall2.2.3修改redis.conf配置文件1.修改IP绑定2.关闭保护模式3.开启后台启动2.2.4Redis命令1.启动redisredis-serverredis.conf2.查看redis服务项3.输入redis客户端redis-cli-p63794.关闭redis1)。命令redis-cli-p6379shutdown2).kill命令kill-9pidnumber2.3SpringBoot集成Redis2.3.1导入jar包redis.clientsjedisorg.springframework.dataspring-data-redis2.3.2入门包com.jt;导入org.junit.jupiter.api。Test;importredis.clients.jedis.Jedis;importredis.clients.jedis.params.SetParams;publicclassTestRedis{/***1.实现redis测试*错误检查:*1.检查redis.conf配置文件1.ip绑定问题2.保护模式问题3.后台启动问题*2.检查redis启动方式redis-serverredis.conf*/@测试publicvoidtest01(){Jedisjedis=newJedis("192.168.126.129",6379);jedis.set("2019","杨千嬅");System.out.println(jedis.get("2019"));}/***判断是否有关键数据,如果没有则添加新数据,如果有则放弃添加*/@Testpublicvoidtest02(){Jedisjedis=newJedis("192.168.126.129",6379);//if(!jedis.exists("2019")){//判断数据是否存在//jedis.set("2019","张学友");//}//System.out.println(jedis.get("2019"));//setnx函数:如果有数据,则不处理。jedis.setnx("2019","陈慧娴");System.out.println(jedis.get("2019"));}/***需求:*给redis增加一个data.set-key-value,要求超时100秒*隐藏bug:如果代码执行过程中报错,删除可能会失败*原子性:要么同时成功时间或同时失败*解决方法:与setex一起设置存储操作/超时时间*死锁操作*/@Testpublicvoidtest03()throwsException{Jedisjedis=newJedis("192.168.126.129",6379);//jedis.set("2019","刘德华");//隐藏含义:业务过期需要删除数据//jedis.expire("2019",100);jedis.setex("2019",100,"刘德华");System.out.println(jedis.ttl("2019")+"秒数");}/***1.如果数据存在,不操作数据setnx*2.同时设置超时时间,注意原子setex*参数说明:*1.XX="xx";只有key存在,然后操作*2.NX="nx";无键,写操作*3.PX="px";毫秒*4.EX="ex";seconds*/@Testpublicvoidtest04(){Jedisjedis=newJedis("192.168.126.129",6379);SetParamssetParams=newSetParams();setParams.nx().ex(100);jedis.set("2019","aaa",setParams);}}2.3.3构建项目结构