事务为了保证多条命令组合的原子性,Redis提供了简单的事务功能以及集成Lua脚本来解决这个问题。简单介绍Redis中事务的使用方法以及它的局限性。Redis提供了简单的事务功能,将一组需要一起执行的命令放到multi和exec两个命令之间。 1.multi命令代表事务开始。2.exec命令代表事务...
很久不在更新,这次来些货一、数据库连接池基本概念所谓的数据库连接池,一般指的就是程序和数据库保持一定数量的数据库连接不断开,并且各请求的连接可以相互复用,减少重复新建数据库连接的消耗和避免在高并发的情况下出现数据库max connections等错误。自己总结一下,如果要实现一个数据库连接池,一般...
近乎万能的区块链技术简单的说,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。其核心就是分布式数据,随之带来的结果就去“去中心化”。区块链技术可以应用于我们生活中的很多场景,接下来我们就来看看区块链技术的解析吧!1.技术是把双刃剑。就像核能是一种物理技术一样,区块...
解决mysql只能使用localhost访问问题mysql> use mysql; mysql> select host,user form user; mysql>update user set host = '%' where user ='root'; mysql>se...
接口当中都有加密的方式,一般对应最多的就是非对称加密方式。这中方式也需要我们使用php中openssl扩展包来实现。话不多说加密方式密码学是涉及数学、电子信息、计算机等多学科的一门重要学科,是现代互联网安全的基石,也是目前如火如荼的区块链技术的安全保障。概括来说,加密方式可归结为不可逆加密与可逆加...
在移动互联网的大潮下,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓RESTful API总会貌合神离,不够规范。架构风格设计:1. RESTful架构风格RESTfu...
微信应用的便捷,扫码登录方式越来越被现在的应用所使用。它因为不用去记住密码,只要有微信号即可方便快捷登录。微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实现。这里基于微信公众平台的带参数临时二维码,并且结合 Swoole 的 WebSocket 服务实现...
集群搭建自从Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是集群管理工具从基于Ruby的redis-trib.rb移植到基于C语言redis-cli中,方便集群的构建和管理Redis Cluster集群运行至少需要包含3个主节点,实现高可用最少需要3主3从6个节点以下步骤基于...
1 使用委派模式模拟任务分配场景我们用代码来模拟老板给员工分配任务的业务场景。 首先创建IEmployee员工接口。public interface IEmployee { void doing(String task);} 创建员工EmployeeA类。public class Employ...
在Elasticsearch中,文档(document)是所有可搜索数据的最小单位。它被序列化成JSON存储在Elasticsearch中。每个文档都会有一个唯一ID,这个ID你可以自己指定或者交给Elasticsearch自动生成。如果延续我们之前不恰当的对比RDMS的话,我认为文档可以类比成关...
把圈子变小 把语言变干净 把成绩往上提 把故事往心里收一收 现在想要的以后你都会有。什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。 Kafka...
微服务架构已经成为现代应用开发的事实标准。微服务架构确实解决了某些问题,但是也并非银弹。它也有着自身的缺点,有些问题亟待解决。这需要通过学习一般模式并使用可重用的解决方案来解决。这就是我们讨论微服务的设计模式的原因。在深入设计模式之前,需要了解微服务架构建立在哪些原理之上:可伸缩性可用性弹性独立,自...
一、zset 可能是 Redis 提供的最为特色的数据结构,它也是在面试中面试官最爱问的数据结构。一方面它是set,保证 value 的唯一性,一方面它可以给每个 value 一个 score,代表排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。 二、SortSet常用命令zset 中最...
第一层为客户端的连接认证,C/S都有此架构第二层为服务器层,包含MySQL的大多数核心服务功能第三层包含了存储引擎,服务器通过API与其通信,API规避了不同存储引擎的差异,不同存储引擎也不会互相通信,另外存储引擎不会去解析SQL(InnoDB是例外,它会解析外键定义,因为服务器本身没有实现该功能)...
一、什么是binlogbinlog其实在日常的开发中是听得很多的,因为很多时候数据的更新就依赖着binlog。举个很简单的例子:我们的数据是保存在数据库里边的嘛,现在我们对某个商品的某个字段的内容改了(数据库变更),而用户检索的出来数据是走搜索引擎的。为了让用户能搜到最新的数据,我们需要把引擎的数...
Docker 安装 RabbitMQdocker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25...
在巨大的数据量的情况下,做查找符合某种规则的Key的信息,这里就有两种方式: keys命令:简单粗暴,但是由于Redis是单线程,keys命令是以阻塞的方式执行的,keys是以遍历的方式实现的复杂度是 O(n),Redis库中的key越多,查找实现代价越大,产生的阻塞时间越长。scan命令: 以非阻...
为了更好利用内存,使Redis存储的都是缓存的热点数据,Redis设计了相应的内存淘汰机制(也叫做缓存淘汰机制)通过 maxmemory 配置项来设置允许用户使用的最大内存大小,当内存数据集大小达到一定的大小时,就会根据 maxmemory-policy noeviction 配置项配置的策略来...
1. RabbitMQ是什么东西RabbitMQ是采用 Erlang 语言开发的 AMQP(Advanced Message Queuing Protocol,高级消息队例协议)的开源实现。它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ的具体特点可以概括为以下几点:可靠性:R...
分布式系统是指:通过网络把多个组件连接起来,并提供组件之间消息传递和协作的系统。分布式系统要解决的问题很多,异构、伸缩性、开放、安全、容错等,但是基本问题是——提供组件之间消息通信。没有这个基础其他的都无从谈起,“异构”、“伸缩”、“开放”、“安全”、“容错”其实都是为了更好的通信而要解决的问题。...