Redis

SpringDataRedis

做~自己de王妃 提交于 2021-01-24 03:35:46
一、简介   1、SpringData和Redis       Redis将数据存储到内存的,速度快。可以解决请求mysql数据库过多而导致mysql崩溃的问题。       SpringData是专门用来控制Redis的工具,使用SpringData来操作Redis。        注意 :在使用了Redis后,修改数据需要将Redis中的数据删除,之后再查的时候在赋值。   2、SpringDataRedis小demo       1、导入依赖        <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4

Springboot mini

和自甴很熟 提交于 2021-01-23 23:36:33
Solon 详解: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播 Solon详解(五)- Solon扩展机制之Solon Plugin Solon详解(六)- Solon的校验框架使用、定制与扩展 Solon详解(七)- Solon Ioc 的注解对比Spring及JSR330 Solon详解(八)- Solon的缓存框架使用和定制 Solon详解(九)- 渲染控制之定制统一的接口输出 Solon详解(十)- 怎么用 Solon 开发基于 undertow jsp tld 的项目? Springboot mini - Solon 的核心 在上篇中我们成功运行了一个简单的web应用;本篇将对它的启动过程、扩展体系和应用属性配置进行介绍。 (一)Solon.start(source, args, builder) 内部执行过程(即Solon的启动过程) 实例化 Solon.global() 加载应用属性配置 加载扩展文件夹 扫描插件并排序记录(插件也可叫扩展组件) 运行builder函数(如果它不为null) 运行插件 扫描source目录并加载java bean 加载渲染关系 完成 了解这个过程非常之重要,尤其是有兴致开发插件的同学:你的插件在运行之前

网站架构优化性能概念

核能气质少年 提交于 2021-01-23 20:38:34
最开始的网站架构 最初业务量不大,访问量小,此时的架构,应用程序、数据库、文件都部署在一台服务器上,有些甚至仅仅是租用主机空间 1. 应用、数据、文件分离 将应用程序、数据库、文件各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。 2. 利用缓存改善网站性能 大部分网站访问都遵循28原则,即80%的访问请求,最终落在20%的数据上,所以我们可以对热点数据进行缓存,减少热点数据的访问路径,提高用户体验。缓存实现常见的方式是本地缓存、分布式缓存。当然还有CDN、反向代理。 2.1 本地缓存 本地缓存,顾名思义是将数据缓存在应用服务器本地,可以存在内存中,也可以存在文件,组件。本地缓存的特点是速度快,但因为本地空间有限所以缓存数据量也有限。 2.2 分布式缓存 分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易,在门户类网站中常常被使用,速度按理没有本地缓存快,常用的分布式缓存是Memcached、Redis。 2.3 反向代理 部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有缓存数据才会继续访问应用服务器获取,这样做减少了获取数据的成本。 2.4 CDN 假设我们的服务器都部署在杭州的机房,对于浙江的用户来说访问是较快的,而对于北京的用户访问是较慢的

分布式CAP理论、BASE理论详解

冷暖自知 提交于 2021-01-23 13:56:08
一、什么是CAP? CAP示意图 Consistency (一致性): “all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。 Availability (可用性): 可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。 Partition Tolerance (分区容错性): 即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。 二、取舍策略 取舍策略图 CAP三个特性只能满足其中两个,那么取舍的策略就共有三种: CA without P: 如果不要求P(不允许分区),则C(强一致性)和A

Ansible 之 when判断语句使用

旧城冷巷雨未停 提交于 2021-01-23 13:33:08
一、when语句 Ansible when 语句等同于if语句的作用 二、判断test主机是否有redis-server进程 --- - hosts: test vars_files: remote_user: cedar become: yes vars: test: "0" tasks: - name: "判断redis进程是否存在" shell: netstat -tlunp | grep redis-server | wc -l ignore_errors: True register: result - name: "打印检查结果" debug: msg: "{{result}}" - name: "打印是否有redis-server进程" debug: msg: "{{result.stdout.find('1')}}" - name: "判断是否启动" shell: touch /root/aaa.txt when: result.stdout.find('1') == 0 #判断屏幕输出结果是否为1 二、当test主机有redis-server进程时结果 [root@Ansible playbook]# ansible-playbook process.yaml PLAY [test] ****************************************

使用ElasticSearch+LogStash+Kibana+Redis搭建日志管理服务

北战南征 提交于 2021-01-23 09:36:47
1. 日志平台的结构示意图 说明: 多个独立的agent(Shipper)负责收集不同来源的数据,一个中心agent(Indexer)负责汇总和分析数据,在中心agent前 的Broker(使用redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表 展示。 Shipper表示日志收集,使用LogStash收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等; Broker作为远程agent与中心agent之间的缓冲区,使用redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在redis中,而不至于丢失; 中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter); ElasticSearch用于存储最终的数据,并提供搜索功能; Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示; 2. 搭建部署 环境: 本机(20.8.40.49)上部署:redis, 中心agent(LogStash), ElasticSearch以及Kibana 远程测试机(20.20.79.75)上部署:独立agent(LogStash) Redis版本: 3.0.0-rc1

三年半 Java 后端鹅厂面试经历,最后跪了!

余生颓废 提交于 2021-01-23 09:10:59
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。 鹅厂 面试职位: go后端开发工程师,接受从Java转语言。 都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大。 一面基础技术面 电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单。 1、redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis的持久化机制,为啥不能用redis做专门的持久化数据库存储? 2、了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用(参考quic)? 3、知道udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计? 4、http与https有啥区别?说下https解决了什么问题,怎么解决的

三年半Java后端面试经历

邮差的信 提交于 2021-01-23 08:18:01
<p>经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。</p> <h3>鹅厂</h3> <p>面试职位:go后端开发工程师,接受从Java转语言 </p> <p>都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大</p> <h5>一面基础技术面</h5> <p>电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单</p> <ol> <li>redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis的持久化机制,为啥不能用redis做专门的持久化数据库存储?</li> <li>了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用?(参考quic)</li> <li>知道udp是不可靠的传输

【Redis学习之七】Redis持久化

两盒软妹~` 提交于 2021-01-23 08:16:39
环境   虚拟机:VMware 10   Linux版本:CentOS-6.5-x86_64   客户端:Xshell4   FTP:Xftp4   jdk8   redis-2.8.18 什么是持久化?   将数据从掉电易失的内存存放到能够永久存储的设备上 Redis持久化方式:   RDB(Redis DB) 类似 hdfs:fsimage 快照   AOF(AppendOnlyFile) 类似 hdfs :edit logs 关闭的 一、RDB 在默认情况下,Redis 将数据库快照保存在名字为dump.rdb的二进制文件中 方式:   (1)阻塞方式:客户端中执行save命令,无法响应客户端请求,创建新的dump.rdb替代旧文件   SAVE不用创建新的进程,速度略快;适合停机维护,服务低谷时段   (2)非阻塞方式:bgsave   非阻塞,Redis服务正常接收处理客户端请求;BGSAVE需要创建子进程,消耗额外的内存;适合线上执行   Redis会fork()一个新的子进程来创建RDB文件,子进程处理完后会向父进程发送一个信号,通知它处理完毕   父进程用新的dump.rdb替代旧文件 策略   手动:客户端发起SAVE、BGSAVE命令   自动:按照配置文件中的条件满足就执行BGSAVE   save 60 1000

微服务的简单介绍

|▌冷眼眸甩不掉的悲伤 提交于 2021-01-23 07:03:56
1、单体应用的缺点 1)部署效率低下 2)协作开发成本高 3)系统高可用性能差 4)线上发布变慢 2、微服务的简单介绍 2.1)将一个单一应用程序,按照业务拆分呢为一组小型服务. 2.2)每个服务只做一件事,每个服务运行在自己的进程中 2.3)服务之间通过轻量级的通信机制(httprestapi) 2.4)每个服务都能够独立的部署 2.5)每个服务甚至可以拥有自己的数据库 2.6)微服务以及微服务架构的是二个完全不同的概念。微服务强调的是服务的大小和对外提供的单一功能,而微服务架构是指把一个一个的微服务组合管理起来,对外提供一套完整的服务 3、微服务的优点 ①:每个服务足够小,足够内聚,代码更加容易理解,专注一个业务功能点(对比传统应用,可能改几行代码需要了解整个系统) ②:开发简单,一个服务只干一个事情。(加入你做支付服务,你只要了解支付相关代码就可以了) ③:微服务能够被2-5个人的小团队开发,提高效率(你应该可以想象我们那时的状况。如果一次上线超过五个人参与的话,就会经常出现各种问题:有的人忘记提交代码、有的人忘记打包、有的人忘记修改工程依赖到最新版本。一次上线过程需要反复确认,耗费了大量精力,严重影响了整体的开发和部署效率。) ④:服务松耦合,每个服务都能够开发部署。 ⑤:前后段分离,作为java开发人员,我们只要关系后端接口的安全性以及性能,不要去关注页面的人机交互