Redis

我是Redis,MySQL大哥被我害惨了!

試著忘記壹切 提交于 2021-01-10 04:38:24
“ Python猫 ” ,一个值得加星标的公众号 剧照 | 《异星灾变》 我是Redis 你好,我是 Redis ,一个叫 Antirez 的男人把我带到了这个世界上。 说起我的诞生,跟关系数据库 MySQL 还挺有渊源的。 在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。 据后来MySQL告诉我说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西,浪费它很多时间去进行磁盘I/O。 后来有人就琢磨,是不是可以学学CPU,给数据库也加一个缓存呢?于是我就诞生了! 出生不久,我就和MySQL成为了好朋友,我们俩常常携手出现在后端服务器中。 应用程序们从MySQL查询到的数据,在我这里登记一下,后面再需要用到的时候,就先找我要,我这里没有再找MySQL要。 为了方便使用,我支持好几种数据结构的存储: String Hash List Set SortedSet Bitmap ······ 因为我把登记的数据都记录在内存中,不用去执行慢如蜗牛的I/O操作,所以找我要比找MySQL要省去了不少的时间呢。 可别小瞧这简单的一个改变

使用Mac搭建Redis5.0集群笔记

こ雲淡風輕ζ 提交于 2021-01-10 03:52:36
点击上方“ Python学习开发 ”,选择“ 加为星标 ” 第一时间关注Python技术干货! 因为是为了学习集群,所以我这里是单机的。 呼唤集群 为什么呼唤? 1.并发量 redis 官方提供数据并发数10万/每秒 如果需要更高的并发量就需要另外方案了,集群 2.数据量 分布式的简单理解:加机器 应对:大并发量,大数据量 数据分布 顺序分区: 对数据集均分存储到各个节点 哈希分区 计算hash值然后取余数 hash(key)/节点数(例如节点取模的方式) 节点取余 如果节点需要增加,在进行迁移的时候比较耗空间,建议采取翻倍扩容的方式。 比如3个节点迁移,可以通过扩容到6个节点,扩容之后的数据只有50%进行了迁移。 一致性哈希 将token(0-2^32)顺时间对节点进行均分。 如果有节点插入,只会影响到相邻的节点,其他的节点不受影响。 虚拟槽分区 Redis Cluster的分区方式 两者的对比 搭建集群 节点之间是互相通信的 Redis Cluster架构 节点 cluster-enable:yes meet 节点之间消息共享 指派槽 redis指定槽的数据为16384。 key访问的时候,会做hash计算,然后取余数,找到对应在哪个范围的槽 找到对应的节点。 复制 安装 下面的安装方式代码不是很严谨,主要是为了了解Redis Cluster的结构

django-redis 缓存使用

自闭症网瘾萝莉.ら 提交于 2021-01-09 12:41:25
Python 使用 redis 依赖 pip3 install redis 直接使用 import redis # decode_responses=True得到的结果会自动解码(不是二进制数据) r = redis.Redis(host='127.0.0.1', port=6379, db=1, password=None, decode_responses=True) 连接池使用 import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password=None, decode_responses=True) r = redis.Redis(connection_pool=pool) <br> <br> 缓存使用 要额外安装 django-redis # 1.将缓存存储位置配置到redis中:settings.py CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client

程序员跳槽有一份好的简历,offer让你拿到手软

人盡茶涼 提交于 2021-01-09 11:12:44
作者:果汁简历 工欲善其事必先利其器,这是自古以来的道理,所以如果想找到一份好的工作,一定要先整理一份好的简历。 模板 写简历首先要有一个好的模板,我们做技术的不同于 UX,UED,我们不需要那么花哨,但是也需要整洁干净。好的模板能让你的简历给面试官一个好的印象,有一句话说得好,简单而不简单。 回到技术上面,既然我们每天都用 Markdown 写文档,那么为什么直接用它编写我们的简历呢?清楚,简介,一目了然,方便存档和编辑。 在线 Markdown 简历生成工具,可以导出 PDF。http://cvbox.sinaapp.com 有道云笔记,支持 Markdown 语法,并且可以存储,同时支持导出 PDF 技巧 目前写简历的方式有两种普遍被认可,一种是 STAR, 一种是 FAB。 STAR法则,即为Situation Task Action Result的缩写,具体含义是: Situation: 事情是在什么情况下发生 Task: 你是如何明确你的任务的 Action: 针对这样的情况分析,你采用了什么行动方式 Result: 结果怎样,在这样的情况下你学习到了什么 FAB 法则,即Feature Advantage Benefit 的缩写,具体含义如下: Feature:是什么 Advantage:比别人好在哪些地方 Benefit:如果雇佣你,招聘方会得到什么好处 综上所述

Docker Compose多容器部署

对着背影说爱祢 提交于 2021-01-09 09:57:39
一、wordpress部署 这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像: (一)准备环境 1、拉取wordpress镜像 [root@docker-node1 /] # docker pull wordpress 2、拉取mysql镜像 [root@docker-node1 /] # docker pull mysql 3、镜像列表 [root@docker-node1 /] # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 0947f14b932b 25 hours ago 540MB mysql latest 791b6e40940c 43 hours ago 465MB (二)运行镜像 1、运行mysql镜像 [root@docker-node1 /] # docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql

百万级高并发技术整体架构

我只是一个虾纸丫 提交于 2021-01-09 08:04:51
高并发是由于应用系统(如:移动APP或网站等)即页面浏览量或点击量大,单台服务器无法承载大量访问所带来的压力,因此会采用服务器硬件集群技术,用N台服务器进行分流,对于每次访问采取负载均衡策略,被分配到不同的服务器来处理请求。 负载均衡种类 一种是通过硬件来实现,常见硬件有F5,A10,NetScaler、Radware和Array等商用的负载均衡器,但是它们是比较昂贵,成本比较高。 另一种是通过软件来实现,常见的软件有LVS、Nginx、Apache等,它们是基于Linux系统并且开源的负载均衡策略。 整体架构图: 架构说明: Keepalived :是用来 检测服务器的状态,如果有一台web服务器宕机,或工作出现故障时,Keepalived将会检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。 Keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 LVS (Linux Virtual Server):即Linux虚拟服务器,有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法(rr|wrr

redis 一主二从三哨兵的搭建

点点圈 提交于 2021-01-09 07:12:02
环境准备 三台独立的linux主机 内网IP分别为: 172.31.175.142、172.31.175.143、172.31.175.144 分别创建带主目录的普通用户, 比如useradd wx -m 安装redis 分别在各个主机上安装redis,以172.31.175.142为例,步骤如下 #下载4.0稳定版 wget http://download.redis.io/releases/redis-4.0.11.tar.gz #解压到用户主目录 tar -xzvf redis-4.0.11.tar.gz -C /home/wx #进入用户主目录 cd /home/wx #重命名解压的文件 mv redis-4.0.11 redis #进入redis目录 cd redis #编译 make #安装,PREFIX指定安装路径 make PREFIX=/home/wx/redis install 主从/哨兵配置 一主(master)二从(slave)三哨兵(sentinel)的配置目标, 如下 redis.conf配置主从, sentinel.conf配置哨兵 conf里面很多初始的配置项可以不做修改, 对于需要修改或新增的配置项, 说明如下 通用配置 下面3项,务必在每个redis.conf里进行修改,在每个sentinel.conf里新增(默认没有) #支持内网/本地访问

【Redis】二、Redis高级特性

五迷三道 提交于 2021-01-09 06:37:11
(三) Redis高级特性   前面我们介绍了Redis的五种基本的数据类型,灵活运用这五种数据类型是使用Redis的基础,除此之外,Redis还有一些特性,掌握这些特性能对Redis有进一步的了解,比如Redis事务、Redis分区、Redis的数据备份等等。 1、Redis HyperLogLog   Redis从2.8.9版本开始加入了HyperLogLog,这听起来有点陌生,实际上它是一个用来 做基数统计的算法 (基数就是数据集中不重复的元素个数,比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8},基数为5)。   Redis做基数统计有其特有的优势,在输入元素的数量或者体积非常非常大时,Redis计算基数所需的空间总是固定的、并且是很小的,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数,但是它只计算基数,并不储存输入元素本身。<div align=center> </div> 2、Redis数据备份与恢复   Redis支持数据的备份,并可以从备份中恢复数据。这主要就是涉及到一个save命令。   当输入save命令时,将在redis安装目录穿件dump.rdb文件,此文件就是备份的数据。如果想恢复数据,只需要将dump.rdb移动到安装目录下

Redis DeskTop Manager 使用教程

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-09 05:33:45
redis desktop manager windows 是一款能够跨平台使用的开源性redis可视化工具。 redis desktop manager 主要针对redis开发设计,拥有直观强大的可视化界面,具有完善全面的数据操作功能,可以针对目标key执行rename,delete,addrow,reload value操作,支持通过SSH Tunnel连接,用户可以通过它对Redis进行操作管理,简化原有的命令语言,充分发挥Redis的特性。 Redis Desktop Manager 简单的来讲就是Redis可视化工具,可以让我们看到Redis中存储的内容。 【基本介绍】 redis desktop manager是一款功能强大的redis数据库管理软件,可以帮助用户轻松快速的查看与操控整个数据库。redis desktop manager不仅拥有十分简洁直观的操作界面,而且所有功能信息一目了然,是广大用户必备的数据库管理神器。 redis desktop manager具有操作简单、方便快捷、功能完善、性能稳定等优点,支持用户采用可视化操作界面对数据库进行各方面工作,不管是新手用户还是专业的开发人员,该软件都是你管理数据库的最佳帮手。 Redis Desktop Manager for windows是一款可以跨平台的redis可视化工具,兼容win、mac等操作系统

合理的使用MySQL乐观锁与悲观锁

依然范特西╮ 提交于 2021-01-09 05:03:27
针对 MySQL的乐观锁与悲观锁的使用,基本都是按照业务场景针对性使用的。针对每个业务场景,对应的使用锁。 但是两种锁无非都是解决并发所产生的问题。下面我们来看看如何合理的使用乐观锁与悲观锁 何为悲观锁 悲观锁(Pessimistic Lock):就是很悲观,每次去取数据的时候都认为别人会去修改,所以每次在取数据的时候都会给它上锁,这样别人想拿这个数据就会block直到它取到锁。比如用在库存增减问题上,利用悲观锁可以有效的防止减库存问题。 简单来讲,悲观锁就是假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观并发控制实际上是 “先取锁,再访问” 的保守策略,为数据处理的安全提供了保证。 在效率上,处理加锁的机制会让数据库产生额外的开销,还会有死锁的可能性。降低并行性,一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。 悲观锁与乐观锁的区别 1 优缺点 两种锁各有优缺点,不可认为一种好于另一种,比如像乐观锁,适用于写比较少的情况下,冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。 2 实现方式 悲观锁的实现方式:悲观锁的实现,依靠数据库提供的锁机制。 在数据库中,悲观锁的流程如下: 1 在对数据修改前,尝试增加排他锁。