Redis

Redis 10亿数据量只需要100MB内存,为什么这么牛?

元气小坏坏 提交于 2020-11-02 05:35:21
作者:java架构设计 来源:toutiao.com/i6767642839267410445 粉丝福利1: 教妹子手撸了50个项目实战后,我住院了…… 粉丝福利2: 我写了10 万字 Spring Boot 详细学习笔记(带完整目录)+源码,分享给大家 本文主要和大家分享一下redis的高级特性:bit位操作。 力求让大家彻底学会使用redis的bit位操作并掌握其底层实现原理!主要包含以下内容: redis位操作命令示例 底层数据结构分析 为什么他的算法时间复杂度是O(1)? 10亿数据量需要多大的存储空间? redis位操作适合哪些应用场景? 本文redis试验代码基于如下环境: 操作系统:Mac OS 64位 版本:Redis 5.0.7 64 bit 运行模式:standalone mode redis位操作 reids位操作也叫位数组操作、bitmap,它提供了SETBIT、GETBIT、BITCOUNT、BITTOP四个命令用于操作二进制位数组。 先来看一波基本操作示例: SETBIT 语法:SETBIT key offset value 即:命令 key 偏移量 0/1 setbit命令用于写入位数组指定偏移量的二进制位设置值,偏移量从0开始计数,且只允许写入1或者0,如果写入非0和1的值则写入失败: GETBIT 语法:GETBIT key offset 即:命令

BeetleX之HTTP网关部署

巧了我就是萌 提交于 2020-11-02 05:19:23
BeetleX组件提供了HTTP网关组件,但使用过程中需要自己写宿主程序来启动它。为了更好的直接使用,组件发布了一个基于.net core 3.1的可运行版本程序并集成了管理插件;只需下载程序即可以在linux或windows下部署一个HTTP网关部署。 部署安装 运行环境 安装有.net core 3.1的linux或windows操作系统 下载 https://github.com/IKende/Bumblebee/releases/download/1.4.2.3/netcore31_1.4.2.3.zip 安装运行 解压运行包后,可以通过以下命令运行服务 dotnet BeetleX.HttpGatewayApp.dll 运行后会显示以下日志 程序默认是启用80端口,如果想更改可以修改HttpConfig.json配置文件。 运行成功后可以通过访问以下地址进入管理界面 http://localhost/__system/bumblebee/index.html 使用介绍 登陆 网关管理功能只有涉及到操作的情况才需要登陆,默认登陆用户名/密码:admin/123456 如果需要修改密可以在Options功能里进行修改 如果有必要可以把Token key值也重新生成一下。 服务器添加 网关使用第一步是添加可访问的HTTP服务应用

案例解析 | 高效上云,助力垂直电商降本增效

梦想的初衷 提交于 2020-11-02 04:11:07
https://juejin.im/post/5e3bba086fb9a07ce01a18d8 甩开技术包袱,做出业务特色,越发成为垂直电商的生存之道   今天,人们通过天猫、淘宝、苏宁进行网络购物,不仅方便,而且快乐,通过盒马、饿了么享受更加快捷的本地生活服务,与此同时,家电、食品等垂直领域的电商平台,也越来越有特色。   A公司是中国较早的食品领域相关产品和服务供应商,旗下的A1网致力于打造安全的大型食品购物网站。 对食品进行优选,在保质期上严格把关,对食品库存温湿度以及人员健康严格把关的同时,网站不断丰富食品种类,满足不同人群的需求,和其他垂直领域电商平台一样,A1网也决定把更多的精力用在不断提升服务质量和特色,网站本身往云上迁移,借助云计算的优势,不断提升系统响应速度,让购物更加快捷,这已经成为该领域正在发生着的一个显著变化。   把IT基础设施重资产(包括基于IDC建设的服务器、存储设备、网络与安全设备等)转移到云上,实现IT基础设施的虚拟化,根据业务量弹性灵活的使用资源,做到按量使用、按需付费,还有另一个附加好处,增强了经济贸易风险抵御能力。当经济形势触底的时候,对于最坏的情况进行兜底,对于经济形势随着拐点上行的时候,能够轻装前进,支持业务的快速扩张。   本文将以案例说明上云为支撑业务和降低成本带来的转变,以及客户的顾虑如何消除,最后通过什么样的步骤上云。

「从零单排canal 03」 canal源码分析大纲

独自空忆成欢 提交于 2020-11-02 02:56:21
在前面两篇中,我们从基本概念理解了canal是一个什么项目,能应用于什么场景,然后通过一个demo体验,有了基本的体感和认识。 从这一篇开始,我们将从源码入手,深入学习canal的实现方式。了解canal相关功能的实现方式,其中有很多机制是非常值得深入了解的,从代码实现角度去学习实时数据订阅与同步的核心技术点。当然,如果要在生产中使用这个开源项目,了解源码更是必不可少,是解决问题和新特性定制的前提条件。 本文使用的版本是1.1.4,这也是笔者写这篇博客时的最新稳定版。 1.准备工作 下载源码 git clone https: //github.com/alibaba/canal.git 切换到1.1.4这个tag git checkout canal-1 .1 .4 或者可以关注我的源码注释版本(正在不断更新中) https: / /github.com/saigu /JavaKnowledgeGraph/tree /master/code _reading/canal 2.canal项目模块介绍 canal项目是基于maven构建的,将不同的功能模块划分了不同的子模块。 我们可以简单执行可执行模块deployer,也可以将模块通过maven依赖的方式,将你需要的子模块引入到你自己的项目中进行使用开发。 简单介绍下核心模块的功能: deployer模块:独立部署模块,用于canal

Redis八大类型常用命令大全(五大常用类型+三个特殊类型)

守給你的承諾、 提交于 2020-11-01 21:22:19
绝对手敲验证完成的一篇博客,多敲几遍才能记得牢! String类型: **应用场景:**缓存、分布式ID、分布式锁、计数器 举例说明:实现分布式ID功能,通过incr自动增长或者incrby实现固定步长增长 常用命令: * 清空数据库:flushdb * 清空全部数据库:flushall * 当前数据库的使用大小:dbsize * 查看当前数据库有多少key:keys * * 切换数据库:select 0 -- redis默认有 16 个数据库,select 0 就是切换到 0 数据库 * 查看某个key是否存在:exists name -- 查看name是否存在,存在返回 1 ,不存在返回 0 * 删除某个key:move name -- 移除name键 * 设置某个key过期时间:expire name 10 -- name 10 s后过期 * 在已有key的value里追加值:append name silence -- 如果追加的key不存在就相当于setkey * 值相加:incr views -- 对键为views的值加 1 * 值相减:decr views -- 对键为views的值减 1 * 增加指定的值: incrby views 10 -- 对键为views的值加 10 * 减少指定的值: decrby views 10 -- 对键为views的值减 10 *

在docker容器部署web应用LNMP服务器环境

。_饼干妹妹 提交于 2020-11-01 20:33:17
镜像下载 [root@localhost ~]# docker pull nginx [root@localhost ~]# docker pull mysql [root@localhost ~]# docker pull php:7.1.0-fpm 编写生成nginx容器 脚本 [root@localhost ~]# vim docker_nginx.sh #!/usr/bin/env bash docker run -p 80:80 --name nginx \ -v /docker/code:/usr/share/nginx/html \ -v /var/log/nginx:/var/log/nginx \ -v /docker/nginx/conf.d:/etc/nginx/conf.d \ --privileged=true \ -d nginx [root@localhost ~]# sh docker_nginx.sh 3e9cd3d3b97c7e5ca001b30b5905c02c616fc48a81d14f716e3242d181ce2b31 编写生成php容器 脚本 [root@localhost ~]# vim docker_php.sh #! /usr/bin bash docker run -p 9000:9000 --name php \ -v

Ansible-playbook

筅森魡賤 提交于 2020-11-01 20:04:13
Ansible-playbook简介 什么是playbook? 简单点说, playbook就是ansible用于配置,部署和管控节点机器的剧本, 将一系列命令的集合归一使用,类似于shell脚本,不过更加强大. playbook与shell脚本比对 它们功能形似,playbook和shell脚本一样,都是批量处理任务.都是把很多命令组合到一起,加入对应条件判断等,要说区别就是命令结构和被执行场景有所不同; shell脚本由一条条命令构成,一般只在当前的服务器运行; playbook中是有一个个task任务构成,每个task都可以当做shell中的一条命令,playbook不止在一个服务器上执行,因此它需要在其中指定运行该playbook的服务器名.而且playbook有着自己的语法格式 playbook语法格式 playbook由YMAL语言编写,YMAL格式类似于JSON格式,便于写读和理解,它的格式如下: #格式 1.文件的第一行应该以 "---" 这三个连续字符开始,代表了YAML文件的开始 2.在一行中, # 后面的内容代表注释,python,ruby,shell都是如此 3.YAML中的列表元素以"-" 开头然后紧接着一个空格,后面为元素内容 4 .在同一个列表中的元素应该保持相同的缩进,否则会当作错误处理 5.play中hosts ,variables,roles

SQL,NoSQL和NewSQL的区别

ぃ、小莉子 提交于 2020-11-01 18:19:45
 SQL(Structured Query Language):数据库,指关系型数据库。主要代表:SQL Server、Oracle、MySQL、PostgreSQL。   NoSQL(Not Only SQL):泛指非关系型数据库。主要代表:MongoDB、Redis、CouchDB。    NewSQL: 对各种新的可扩展/高性能数据库的简称。主要代表:Clustrix、GenieDB。 二:对比   SQL: 好处来源于它的统一性和易用性,缺点是面对大量的数据时,他的性能会随着数据库的增大而急剧下降。 NoSQL: 以放宽ACID原则为代价,NoSQL采取的是最终一致性原则,而不是像关系型数据库那样地严格遵守着ACID的原则,这意味着如果在特定时间段内没有特定数据项的更新,则最终对其所有的访问都将返回最后更新的值。 这就是这样的系统通常被描述为提供基本保证的原因(基本可用,软状态,最终一致性) — 而不是ACID。 NewSQL: NewSQL选择汲取了SQL和NewSQL的优点,希望将ACID和可扩展性以及高性能结合,但是目前而言,不适用于所有的场景。 三:Let's think   根据CAP原则, Consistency(一致性) Availability(可用性) Partition tolerance(分区容错)   这三点不能够同时做到,所以我们可以猜想

Redis 简介

天涯浪子 提交于 2020-11-01 15:09:38
Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis与其他key-value存储有什么不同? Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。 Redis运行在内存中但是可以持久化到磁盘

SpringBoot2.X + SpringCache + redis解决乱码问题

烂漫一生 提交于 2020-11-01 05:33:12
环境:SpringBoot2.X + SpringCache + Redis Spring boot默认使用的是SimpleCacheConfiguration,使用ConcurrentMapCacheManager来实现缓存。 配置: spring: redis: host: 192.168.1.192 database: 1 port: 6379 password: 123456 timeout: 1s jedis: pool: max -active: 20 max -idle: 20 min -idle: 10 max -wait: - 1ms cache: redis: use -key-prefix: true key - prefix: dev cache - null -values: false time -to-live: 20s 解决redis保存数据乱码的问题 解决从redis反序列化报错的问题 增加失效时间 @Configuration @ConfigurationProperties(prefix = "spring.cache.redis" ) public class SpringCacheRedisConfig { private Duration timeToLive = Duration.ZERO; public void