Redis

你心中最高大上最牛逼的技术到底是什么大声告诉我

一曲冷凌霜 提交于 2021-01-14 03:46:58
借用一句话, 西北玄天一片云,乌鸦落进凤凰群 满网都是英雄汉,谁是君来谁是臣 **高以下为基,贵以贱为本 互联网技术的核心根基就是 TCP/IP,TCP/IP 的实现依赖于Linux socket API【我们的项目大部分运行在上面】 没有它们各种高大上牛逼的技术就无从建立起来。而这根基对大家所用的java,go,py,php,c,c++,nodejs...都是一样的,只不过是基于Linux api做了各种各样的封装百家争鸣,百花齐放,跟易经里的阴阳构成64卦一样,当你刚开始撸程序时,可能并不会觉得基础的重要性,甚至可能几年内一直是框架crud boy,你并不会察觉到基础核心Linux socket api! 每天被各种新技术词汇遮蔽双眼,而基础知识你一直的错失和鄙视低估,就想一步飞龙在天,达到九五爻之位,并没有“以下为基” “以贱为本” ** 甚至对于其它知识点你都持“下贱之态”只想与天齐名,从不脚踏实地从坤做起。 先给总结图 你再看下面的内容 下面就是要告诉你所谓的牛逼技术到底是什么回事!!! 我们测试一下数据库,java,python,go,c/c++,php,redis,docker进行测试 【测完你会发现点东西】 然后你再看图比较好,免得大家天天为了这个框架,那个框架,这个语言,哪个语言在b乎,快手,抖音,b站吵的跟少妇一样[只是吐槽一下] ^_^

在一台机器上配置 redis 哨兵模式

雨燕双飞 提交于 2021-01-13 21:12:19
在同一台机器上配置哨兵模式, 可用于测试开发场景 下载redis wget https://github.com/redis/redis/archive/5.0.10.tar.gz 解压到三个文件夹, redis-1, redis-2, redis-3 进行 make 编译, 参考这里 在本机上配置哨兵模式, 重点是使用不同的端口 redis服务 redis端口 哨兵端口 主从 redis-1 6379 26379 主节点 redis-2 6380 26380 从节点 redis-3 6381 26381 从节点 配置 ./redis-1/redis.conf, 如下 # bind 127.0.0.1 // 注释掉这一行 protected-mode no // 关闭保护模式 port 6379 // redis 端口 requirepass 10010 // 设置redis密码 配置 ./redis-2/redis.conf, 如下 # bind 127.0.0.1 // 注释掉这一行 protected-mode no // 关闭保护模式 port 6380 // redis 端口 requirepass 10010 // 设置redis密码 replicaof 192.168.171.213 6379 // 配置 master 的IP和端口 masterauth 10010

keycloak集群化的思考

浪子不回头ぞ 提交于 2021-01-13 17:49:57
简介 单体服务如果想要突破到高并发服务就需要升级为集群服务。同时集群化也为高可用打下了坚实的基础。纵观现在比较流行的服务或者中间件,不管是RabbitMQ还是redis都提供了集群的功能。 作为硬核工业代表的wildfly也不例外,最近研究了一下keycloak的集群,发现它的底层服务器用的也是wildfly,本文将会和大家探讨一下keycloak的集群的架构思路。 keycloak中的集群 我们知道,keycloak中有两种模式,一种叫做Standalone,一种叫做domain。 这两种模式的区别只是在于部署文件是否被集中管理,如果部署文件需要一个一个的手动拷贝,那么就是standalone模式。如果是一键化的自动安装,那么就是domain模式。 standalone模式下有一个配置文件叫做 /standalone/configuration/standalone-ha.xml,这个就是在standalone模式下配置集群的xml文件了。 而domain模式下,配置文件都是在domain controller这个机子上进行配置的,具体的文件是 domain/configuration/domain.xml 。 我们看下ha具体是用的集群相关的组件: <profile name="full-ha"> ... <subsystem xmlns="urn:jboss:domain

2020年度最常见的Spring Boot面试题【附解析】

无人久伴 提交于 2021-01-13 17:11:40
前言 Spring Boot 是一套快速开发框架,随着微服务架构应用不断普及,Spring Boot 的研发技术的掌握已经成为研发人员必会技能。与此同时,Spring Boot 开源生态建设能力非常强大,提供了很多应用组件,让Spring Boot 有丰富的三方开源软件的使用。 基于上面的情况,Spring Boot 基本上成为了大中型互联网公司面试的必考题。 本篇小编根据大厂的一些面试题库的梳理,将核心的面试提供分享给大家 1、什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 2、Spring Boot 主要有如下优点: 容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。 开箱即用,远离繁琐的配置。 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。 没有代码生成,也不需要XML配置。 避免大量的 Maven 导入和各种版本冲突。 3、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解

【分享】软件测试--数据库基础知识

时光总嘲笑我的痴心妄想 提交于 2021-01-13 17:10:50
一、为什么要学习数据库 能够反作用于业务和快速分析定位问题 在软件开发中会遇到很多问题,追根究底它就是一个数据库里数据的问题,就比如说我们要去验证注册来源对不对,如果我们不去查库的话,我不知道有这个字段的存在,虽然它需求里面说了这么一段话,但实际我从页面上去做功能测试的时候,我并不能看到这个注册来源到底存得对不对,所以我们要去看数据库。 二、常见数据库 1、关系型数据库 关系型数据库:关系型数据库的官方解释比较难理解,其实简单点来讲,关系型数据库就是以行和列的形式储存数据的组织结构,这里体现为二维结构的表,而且多个表之间可能会存在一些关系。 1)Oracle Oracle是美国oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,oracle数据库的特点是安全、高速、稳定、并发性好,这些特点都使得很多大企业都选择数据库的时候毫不犹豫的选择了oracle。 早些年的时候,世界500强几乎100%都是oracle的用户。但是oracle是收费的,而且不便宜,这也使得很多初创公司或者中小型企业是完全没有能力去负担这笔开支,而放弃使用oracle,转而选择简便易用,更轻量级且免费开源的MySQL。 2)MySQL MySQL是一种开发源代码的关系型数据库管理系统,并且因为其速度,可靠性和适用性备受中小型企业的青睐。虽然早期版本不支持事物操作、子查询、外键、存储过程和视图等功能

还在使用kill -9 pid结束spring boot项目吗?那你已经落伍了!

百般思念 提交于 2021-01-13 15:51:14
作者:流星007 blog.csdn.net/qq_33220089/article/details/105708331 kill -9 pid ??? kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看(这段话来自菜鸟教程)。 讲的这个复杂,简单点来说就是用来杀死linux中的进程,啥?你问我啥是进程?请自行百度。 我相信很多人都用过 kill -9 pid 这个命令,彻底杀死进程的意思,一般情况我们使用它没有上面问题,但是在我们项目中使用它就有可能存在致命的问题。 kill -9 pid 带来的问题 由于kill -9 属于暴力删除,所以会给程序带来比较严重的后果,那究竟会带来什么后果呢? 举个栗子:转账功能,再给两个账户进行加钱扣钱的时候突然断电了?这个时候会发生什么事情?对于InnoDB存储引擎来说,没有什么损失,因为它支持事务,但是对于MyISAM引擎来说那简直就是灾难,为什么?假如给A账户扣了钱,现在需要将B账户加钱,这个时候停电了,就会造成,A的钱被扣了,但是B没有拿到这笔钱,这在生产环境是绝对不允许的,kill -9 相当于突然断电的效果。 当然了,像转账这种,肯定不是使用MyISAM引擎,但是如今分布式火了起来

redis命令之 ----String(字符串)

我是研究僧i 提交于 2021-01-13 15:27:15
SET SET key value [EX seconds] [PX milliseconds] [NX|XX] 将字符串值 value 关联到 key 。 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。 GET GET key 返回 key 所关联的字符串值。 如果 key 不存在那么返回特殊值 nil 。 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。 APPEND 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。 SETBIT SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 位的设置或清除取决于 value 参数,可以是 0 也可以是 1 。 当 key 不存在时,自动生成一个新的字符串值。 字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。 offset 参数必须大于或等于

Redis字符串(String)

眉间皱痕 提交于 2021-01-13 15:26:53
Redis字符串(String) 单值单value 1. 基本方法 set/get/del/append/strlen append: 追加 strlen : 求长度 127.0.0.1:9736> set k4 v3 OK 127.0.0.1:9736> get k4 "v3" 127.0.0.1:9736> append k4 55555 (integer) 7 127.0.0.1:9736> strlen k4 (integer) 7 127.0.0.1:9736> get k4 "v355555" 127.0.0.1:9736> del k4 (integer) 1 127.0.0.1:9736> keys * 1) "k2" 2) "k3" 127.0.0.1:9736> 2. incr/decr/incrby/decrby 一定要是数字才能进行加减 incr key : 加1 decr key : 减1 incrby key num : 根据num递增 decrby key num: 根据num 递减 127.0.0.1:9736> get k4 "2" 127.0.0.1:9736> incr k4 (integer) 3 127.0.0.1:9736> get k4 "3" 127.0.0.1:9736> decr k4 (integer) 2 127.0.0.1

Redis 字符串(String)

左心房为你撑大大i 提交于 2021-01-13 15:26:01
1.SET key value 设置指定 key 的值 2.GET key 获取指定 key 的值。 3.GETRANGE key start end 返回 key 中字符串值的子字符 4.GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 5.GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 6.MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。 7.SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 8.SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 9.SETNX key value 只有在 key 不存在时设置 key 的值。 10.SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 11.STRLEN key 返回 key 所储存的字符串值的长度。 12.MSET key value [key value ...] 同时设置一个或多个 key-value 对。 13

Redis-String(字符串)

ε祈祈猫儿з 提交于 2021-01-13 12:44:04
String(字符串) 前言 概括 1、append,strlen 2、 incr ,decr ,incrby设置自增步长,decrby 3、getrange截取字符串,SETRANGE将指定位置字符 替换为 指定字符串 4、setex ,setnx 5、mset mget 同时设置多个值,msetnx原子性操作 6、用字符串 保存对象 7、getset 先get然后在set 前言 提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说 真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进! 技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!) 云计算的长征之路:阿里云的这群疯子 概括 String类似的使用场景:value除了是我们的字符串还可以是我们的数字! 使用场景: 计数器 统计多单位的数量 粉丝数 对象缓存存储! 1、append,strlen 127.0 .0 .1 : 6379 > set key1 v1 # 设置值 OK 127.0 .0 .1 : 6379 > APPEND key1 "hello" # 追加字符串,如果当前key不存在,就相当于setkey ( integer ) 7 127.0 .0 .1 : 6379 > get key1