Redis

Redis笔记------Redis_安装和HelloWorld

爱⌒轻易说出口 提交于 2020-12-26 04:30:16
一、入门概述:   是什么:Redis:REmote Dictionary Server(远程字典服务器),是一个高性能(key/value)分布式内存数据库。有一下三个特点: 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用。 Redis不仅仅支持简单的Key-Value类型的数据,同时还提供了List、Set、Zset、Hash等数据结构的数据。 Redis支持数据的备份,即master-slave模式的数据备份。  二、Linux下安装Redis:   ①下载获得redis-5.0.4.tar.gz后将它放入我们的Linux目录/opt下并解压,解压命令:tar -zxvf redis-5.0.4.tar.gz,解压后得到 redis-5.0.4   ②进入目录: cd redis-5.0.4   ③在redis-5.0.4目录下执行make命令(如果报错,看看是不是linux没有安装gcc环境,至于如何安装可以搜一下教程)。   ④当界面显示 It's a good idea to run 'make test';表示你已经成功安装了redis。(不需要运行该命令)   ⑤make完成后运行 make install 测试是否安装成功。 三、HelloWorld    ①首先进入到redis的安装目录:cd /opt,再进入redis的文件夹下

Java面试 32个核心必考点完全解析

别来无恙 提交于 2020-12-25 18:37:18
[TOC] 这是一份来自哔哩哔哩的Java面试 Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块 : 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块 : 常用工具集 常用框架 缓存 队列 数据库 综合模块 : 系统架构设计 微服务架构 容器化 1.2 换工作面临问题 能力不错,却总被忽略 不知道简历怎么准备 工作年限 美观度 多分简历 不知道面试官考什么 社交门户侧重于大规模并发场景的应用和架构能力 OTO行业侧重于综合能力考察 金融更喜欢逻辑缜密,对高可用安全领域有经验的候选人 校招更多对基础知识和逻辑思维方面的考察,以培养潜力考察为主 初中级工程师则需要多关注知识的广度,基础知识的应用 高级资深工程师需要深入理解基本原理,以综合能力考察为主 没有get到面试官的考察意图。如:问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。 不知道如何提升晋级? 学习首先有个框架 1.3 课程特色 全盘汇总:Java知识体现精细梳理 特近实战:面试官亲自教你拿Offer 潜规则:揭秘技术面试加分&潜规则 权威性:拉勾40W技术岗位大数据支持 课时1:技术人职业发展路径 1.1 工程师发展路径 技术序列 :技术攻坚、架构知识、专业知识 工程师 高级工程师 资深工程师 技术专家

Guice依赖注入(Provider)

回眸只為那壹抹淺笑 提交于 2020-12-25 18:12:19
本教程主要详细讲解Guice依赖注入中的Procider服务注入实现,一般都是用于外部服务的注入,比如实现Redis等。 基础环境 技术 版本 Java 1.8+ Guice 4.2.3 初始化项目 初始化项目 mvn archetype : generate - DgroupId = com . edurt . sli . guice - DartifactId = guice - binder - provider - DarchetypeArtifactId = maven - archetype - quickstart - Dversion = 1.0 . 0 - DinteractiveMode = false 修改pom.xml增加Guice依赖 <? xml version = "1.0" encoding = "UTF-8" ?> <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <parent>

Serverless 架构的演进

吃可爱长大的小学妹 提交于 2020-12-25 10:18:10
The Serverless Framework (无服务器架构)允许你自动扩展、按执行付费、将事件驱动的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure,并且正在扩展以支持其他云提供商。 Serverless 降低了维护应用程序的总成本,能够更快地构建更多逻辑。它是一个 命令 行工具,提供脚手架、工作流自动化和开发部署无服务器架构的最佳实践。它也可以通过插件完全扩展。 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 ▲ 单体架构 单体应用架构面临的问题 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 ▲ 单体架构(水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性

Redis6安装(下)

生来就可爱ヽ(ⅴ<●) 提交于 2020-12-25 09:13:10
Redis6安装(下) - 集群与故障转移 Redis Cluster 搭建准备工作 搭建集群之前,务必有一点需要注意就是选举,因为在如今很多的分布式中间件里,集群都会有选举这个概念,一定要达到半数以上的节点,才能够发起公平的投票,否则就会脑裂,比如redis,zk,es等,所以至少保证3个master节点,master会发起选举投票的。这一点要须知。 配置6个节点的虚拟机(预先做好) 192.168.1.221 192.168.1.222 192.168.1.223 192.168.1.224 192.168.1.225 192.168.1.226 192.168.1.227(新增Master) 192.168.1.228(新增Slave) 每个节点搭建单机redis,清理aof和rdb文件(预先做好) 如果为单实例的Redis设置了密码password,那么每个节点都必须要设置masterauth,也就是对应密码,这样是为了master挂掉以后,对应的slave可以升级为master。 需要注意,选举的过程会短暂的对外不可用。 Redis Cluster 搭建实操演练 附: 关闭redis ./redis-cli -p <修改的端口号> -a <修改的密码> shutdown 开启redis: ./redis-server redis.conf 每个单实例中的 redis

接口幂等性的解决方案

跟風遠走 提交于 2020-12-25 06:59:01
在编程中,幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数指的是那些使用相同参数重复执行也能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。比如说getIdCard()函数和setTrue()函数就是幂等函数。 幂等在我的理解里就是,一个操作不论被执行多少次,产生的效果和返回的结果都是一样的。 一个幂等的操作典型如:把编号为5的记录的A字段设置为0这种操作不管执行多少次都是幂等的。 一个非幂等的操作典型如:把编号为5的记录的A字段增加1这种操作显然就不是幂等的。 幂等的方案 1.查询操作:Select是天然的幂等操作。 查询一次和查询多次,在数据不变的情况下,查询的结果都是一样的。 2.删除操作:删除操作也是幂等的,删除一次和删除多次都是把数据删除。 因为删除操作通常是定向的,比如通过id去删除数据,如果该id在数据库中存在对应记录,则删除该记录;如果该id在数据库中不存在对应记录,也是执行的删除记录操作,只是没有实质性地删除到记录而已,却也不会有其他的副作用。 但是如果删除操作具有返回值的话,可能返回的结果会不一样,比如删除一条记录之后返回这条记录中的某个值,如果删除的数据不存在(已经在第一次的删除请求中被删除了),返回的就是空值了。 3.唯一索引:通过在数据库表的一个字段上建立唯一索引可以有效防止新增脏数据。

C#爬虫使用代理刷csdn文章浏览量

拈花ヽ惹草 提交于 2020-12-25 03:39:52
昨天写了一篇关于“ c#批量抓取免费代理并验证有效性 ”的文章,接着昨天的目标继续完成吧,最终实现的目的就是刷新csdn文章的浏览量(实际上很简单,之前博客园的文章也是可以使用代理ip来刷的,后来不行了),刷文章的浏览量本身是可耻的,没有任何意义,当然技术无罪。之前是在csdn写文章,自从csdn改版之后就主要在博客园写。 1.如何维护代理IP库? 想要使用代理IP,那就必须有一个一定数量、足够有效的代理ip库,在学习阶段,随便玩玩那就只能从免费的代理IP网站上抓取,没有一定数量的代理刷文章流浪量非常慢,首先就是要维护好自己的代理Ip库 之前用过的 西刺代理 、 66ip 比较靠谱,西祠好像有反扒,遇到过一次,不知道是西祠网站的问题还是反扒的策略,这两个网站每分钟抓取的能用的代理大概有2,3个,这已经算的上比较客观的了, data5u、快代理、ip3366网页端更新的非常少,而且有效性比较低,快代理抓取网页还必须设置Useragent,发现设置后获取的ip的端口和网页端不一致,很玩味是吧,没办法免费的就是这样,不然人家就收费了,当然付费的代理也不稳定,但肯定是比免费的好很多。 维护代理质量 从网页端抓取下来的代理,肯定是要经过验证再入库的,最简单的方式就是发起一个请求状态码是否为200。我推荐的免费代理还是上面两个西刺代理和66ip,相对其他的免费代理有效性、数量都比较高。

他来了,支持多线程的Redis6.0他来了!

故事扮演 提交于 2020-12-24 15:59:42
来源:https://www.cnblogs.com/mr-wuxiansheng/p/12884356.html 作者:Mr_伍先生 本文总结下来主要以下几点: 虽然支持多线程,但默认不开启 配置线程数要小于CPU数 虽然开了多线程,但其实还是单线程处理逻辑,不用担心线程安全问题 多线程主要解决I/O读写瓶颈问题,针对业务量达到亿级的应用,常规项目没有必要使用 Redis 6.0 之前的版本真的是单线程吗? Redis 在处理客户端的请求时,包括获取(Socket 读)、解析、执行、内容返回(Socket 写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。 但如果严格来讲从 Redis 4.0 之后并不是单线程,除了主线程外,它也有后台线程在处理一些较为缓慢的操作,例如清理脏数据、无用连接的释放、大 Key 的删除等等。 Redis 6.0 之前为什么一直不使用多线程? 官方曾做过类似问题的回复:使用 Redis 时,几乎不存在 CPU 成为瓶颈的情况, Redis 主要受限于内存和网络。 例如在一个普通的 Linux 系统上,Redis 通过使用 Pipelining 每秒可以处理 100 万个请求,所以如果应用程序主要使用 O(N) 或 O(log(N)) 的命令,它几乎不会占用太多 CPU。 使用了单线程后,可维护性高。多线程模型虽然在某些方面表现优异

Java中高级核心知识全面解析——Redis(简介、基本数据结构、跳跃表【简介、实现】)上

丶灬走出姿态 提交于 2020-12-24 15:57:59
目录 一、5种基本数据结构 1.Redis简介 1)Redis 的优点 2)Redis 的安装 3) 测试本地 Redis 性能 2.Redis五种基本数据结构 1)字符串 string ①、SDS 与 C 字符串的区别 ②、对字符串的基本操作 ③、设置和获取键值对 ④、批量设置键值对 ⑤、过期和 SET 命令扩展 ⑥、计数 ⑦、返回原值的 GETSET 命令 2)列表list ①、链表的基本操作 ②、list 实现队列 ③、list 实现栈 3)字典 hash ①、渐进式 rehash ②、扩缩容的条件 ③、字典的基本操作 4)集合 set ①、集合 set 的基本使用 5)有序列表 zset ①、有序列表 zset 基础操作 二、跳跃表 1.跳跃表简介 1)为什么使用跳跃表 2)本质是解决查找问题 3)更进一步的跳跃表 2.跳跃表的实现 1)随机层数 2)创建跳跃表 3)插入节点实现 第一部分:声明需要存储的变量 第二部分:搜索当前节点插入位置 第三部分:生成插入节点 第四部分:重排前向指针 第五部分:重排后向指针并返回 4)节点删除实现 5)节点更新实现 6)元素排名的实现 一、5种基本数据结构 1.Redis简介 “ Redis is an open source (BSD licensed), in-memory data structure store, used as

『互联网架构』软件架构-nginx(下)

无人久伴 提交于 2020-12-24 15:02:23
今天继续说说nginx,之前只是介绍了nginx的配置,这次主要说说nginx的生产环境的配置,我们在生产中是如何配置的。源码: https://github.com/limingios/netFuture/tree/master/nginx 系统类型 IP地址 节点角色 CPU Memory Hostname Centos7 192.168.66.110 nginx 1 2G nginx Centos7 192.168.66.111 tomcat 1 2G tomcat1 Centos7 192.168.66.112 tomcat 1 2G tomcat2 Nginx如何实现高速缓存(一) 场景介绍 假设在做一个大型项目,面向全国的,公司对架构师的要求是做到700+的QPS,如何去处理。 介绍几个开发网站需要了解的关键字 响应时间(RT) 响应时间是指系统对请求作出响应的时间。 吞吐量(TPS) 系统在单位时间内处理请求的数量 并发用户数 系统可以同时承载的正常使用系统功能的用户的数量 QPS每秒查询率 对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准 了解下一个网站一般的实际html大小 打开一个技术博客:idig8.com 查看源代码 保存在文件大小:45kb,700QPS/s = 700*45/1024 = 30MB,单个页面如果700QPS的话需要吐出来30MB