
Redis从入门到高并发
为了应付高并发问题,大家绞尽脑汁,由于Redis的简单易懂,渐渐成为了解决此问题的佼佼者,通过此教程,你可以从Redis的基础开始一直深入学习,而高并发问题也会迎刃而解。
我是一只程序⚪
多读书,多看报
展开
-
如何解决秒杀高并发问题
一、秒杀业务为什么难做? 1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); 2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据; 3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。 例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。 又例如:12306抢票,票是有限的,库存一份,瞬时流...原创 2019-04-16 15:34:15 · 725 阅读 · 1 评论 -
多服务器如何共享session
在现在的大型网站中,如何实现多台服务器中的session数据共享呢 当使用多台服务器架设成集群之后,我们通过负载均衡的方式,同一个用户(或者ip)访问时被分配到不同的服务器上,假设在A服务器登录,如果在B服务器拿不到用户的登录信息session。这时访问到B服务器时就出现未登录情况。 所以如何对于这种情况做到共享session至关重要。 以下给出一些解决方案:(来源网络以及自己的一些见解) ...原创 2019-04-16 11:31:11 · 1003 阅读 · 0 评论 -
【Redis—20】利用python实现Redis消息列队
既然是消息列队,那肯定会借助到Redis数据结构中的list list 这个数据类型,在python里是一个列表,在redis里就是一个有序队列(或者说数据链表)了。 类型图示如下: 通过这个结构就可以对list很清楚了,我们可以利用list的数据接口模式,设计从左端和右端都可以对list进元素的同向处理(满足队列的特性先到先出)。 1、从左端插入元素 from redis import Str...原创 2019-04-16 20:19:16 · 432 阅读 · 0 评论 -
【Redis—19】Redis的底层数据结构查询
1、演示数据类型的实现 在Redis种有如下命令命令: OBJECT ENCODING key 该命令是用来显示那五大数据类型的底层数据结构。 比如对于 string 数据类型: 127.0.0.1:6379> set k1 vvvvvv1 OK 127.0.0.1:6379> OBJECT encoding k1 "embstr" 127.0.0.1:6379>...原创 2019-04-16 10:51:05 · 348 阅读 · 0 评论 -
【Redis—18】Redis分布式锁以及Python实现
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致...原创 2019-04-14 09:10:16 · 6172 阅读 · 1 评论 -
【Redis—17】Redis安全
一、设置密码 设置redis密码,在redis.conf文件配置 requirepass xxxxxx 注意:因为redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。 找到这行,打开注释,写入新的密码: 客户端连接则需要密码:AUTH xxxxxx 或者 redis-cli -h 1...原创 2019-04-14 08:45:46 · 232 阅读 · 0 评论 -
【Redis—16】Redis高可用Sentinel哨兵
Sentinel哨兵是redis官方提供的高可用方案,可以用它来监控多个Redis服务实例的运行情况。说白了就是24小时不间断服务。 一、监控 Sentinel会不断检查Master和Slave是否正常 如果Sentinel挂了,就无法监控,所以需要多个哨兵,组成Sentinel网络 监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并交换彼...原创 2019-04-14 08:21:12 · 302 阅读 · 0 评论 -
【Redis—15】Redis集群(容灾)
一、相关命令 启动redis指定配置文件:./redis-server redis.conf 进入客户端需指定端口:./redis-cli -p 6380 不配置启动默认都是主master info replication 查看redis服务器所处角色 二、主从复制 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但是由于数据是存储在一台服务...原创 2019-04-14 07:51:13 · 1064 阅读 · 0 评论 -
【Redis—14】Redis持久化
一、持久化概述 持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化。 Redis的数据存储在内存中,内存是瞬时的,如果linux宕机或重启,又或者Redis崩溃或重启,所有的内存数据都会丢失,为解决这个问题,Redis提供两种机制对数据进行持久化存储,便于发生故障后能迅速恢复数...原创 2019-04-14 07:50:57 · 157 阅读 · 0 评论 -
【Redis—13】Redis事务(乐观锁)
一、什么是事务 事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。 比如微博中:A用户关注了B用户,那么A的关注人列表里面就会有B用户,B的粉丝列表里面就会有A用户。 这个关注与被关注的过程是由一系列操作步骤构成: (1)A用户添加到B的粉丝列表里面 (2)B用户添加到A的关注列表里面; 这两个步骤必须全部执行成功,整个逻辑才是正确的,否则就会产生数据的错误...原创 2019-04-14 07:51:06 · 6956 阅读 · 0 评论 -
【Redis—12】Redis发布和订阅(Python实现)
一、什么是发布订阅 在软件架构中,发布订阅是一种消息范式,消息的发送者(称为发布者)不会将消息直接发送给特定的接收者(称为订阅者)。而是将发布的消息分为不同的类别,无需了解哪些订阅者(如果有的话)可能存在。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需了解哪些发布者(如果有的话)存在。 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(publish)发...原创 2019-04-13 17:17:41 · 1176 阅读 · 0 评论 -
【Redis—11】Redis-Dump对Redis数据的导入导出操作
Redis-Dump提供了强大的Redis数据的导入和导出功能,现在就来看下它的具体用法。 一、Redis-Dump的安装 redis-dump是将redis和json互转的工具;redis-dump是基于ruby开发,需要ruby环境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安装2.0版本的ruby。需要先安装ruby的管理工具rvm安...原创 2019-04-13 16:15:52 · 2223 阅读 · 5 评论 -
【Redis—10】通过Python操作Redis
Redis是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持多种存储数据结构,使用也非常简单。本节中,我们就来介绍一下Python的Redis操作,主要介绍RedisPy这个库的用法。 1. 准备工作 在开始之前,请确保已经安装好了Redis及RedisPy库。如果要做数据导入/导出操作的话,还需要安装RedisDump。 #安装命令 pip install redi...原创 2019-04-13 16:02:35 · 319 阅读 · 0 评论 -
【Redis—09】Redis五种数据类型-有序集合类型操作
Redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。 不同的是zset的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。 key value key [100北京,90上海,80深圳,70广州] 常用操作: 1、zadd 将一个或多个 member 元素及其 score 值加入到有...原创 2019-04-13 15:22:09 · 178 阅读 · 0 评论 -
【Redis—08】Redis五种数据类型-集合类型操作
Redis的Set是string类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据。结构和list很相似,但是不允许重复。单个值为string类型。 key value key [上海,北京,深圳,广州] 常用操作: 1、sadd 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将不会再加入 127.0.0.1:...原创 2019-04-13 14:30:08 · 174 阅读 · 0 评论 -
【Redis—07】Redis五种数据类型-列表操作
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边),类似于双向链表结构,可从序列两端推入或者弹出元素。 key value key [北京,上海,广州,深圳,北京](允许重复) 常用操作: 1、lpush 将一个或多个值 value 插入到列表 key 的表头(最左边) 127.0.0.1:6379> lp...原创 2019-04-13 12:40:56 · 167 阅读 · 0 评论 -
【Redis—06】Redis五种数据类型-哈希类型操作
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 key value stu (field:value)id:1,name:'人学物理死的早',age:18 常用操作: 1、hset 将哈希表 key 中的域 field 的值设为 value 127.0.0.1:6379> ...原创 2019-04-13 11:22:15 · 195 阅读 · 0 评论 -
【Redis—05】Redis五种数据类型-字符串操作
字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。 图片使用base64的方式转为字符串存入redis 而对象可以序列化后存入redis key value city 北京上海深圳(string) 常用操作: 1、set 将字符串值 value 设置到 key 中 127.0.0...原创 2019-04-13 10:45:46 · 188 阅读 · 0 评论 -
【Redis—04】Redis的手册与key操作
一、1+5命令 1种key操作 5种数据类型操作 字符串类型 string 哈希类型 hash 列表类型 list 集合类型 set 有序集合类型 zset(sorted set) redis中数据都是以键值对方式存储的,key是字符串类型,value常用类型为5种。 二、手册 redis英文版命令大全:https://redis.io/commands redis...原创 2019-04-13 09:30:09 · 218 阅读 · 0 评论 -
【Redis—03】Redis初体验
连接Redis: 1、ping 输入ping,返回PONG说明服务器正常运行 2、redis默认为16个库 如果增加库数量或者减少库数量,需要在redis.conf文件配置,该文件很重要,后续很多操作都是这个配置文件。 修改默认库数量: 3、默认库且换 当我们写入数据的时候redis默认自动使用0号库 如果想切换默认库可以使用命令 select db 效...原创 2019-04-13 08:27:13 · 218 阅读 · 0 评论 -
【Redis—02】Redis客户端
Redis使用的时候,可以通过几种客户端进行链接,也是我们常用的操作Redis方法。 记住使用客户端链接之前一定要启动Redis!!! 一、Redis命令行客户端 redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,用于与服务端交互,我们可以使用该客户端来执行redis的各种命令。 直接连接redis...原创 2019-04-12 21:33:18 · 286 阅读 · 0 评论 -
【Redis—01】Redis介绍与安装
Redis介绍: Redis(Remote Dictionary Server)是一个开源的由Salvatore Sanfilippo使用ANSI C语言编写的key-value数据存储服务器。其值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型,所以它通常也被称为数据结构服务器。 Redi...原创 2019-04-12 20:52:47 · 373 阅读 · 0 评论