Redis学习记录

Redis学习笔记(更新中…)

1. 数据库架构设计的发展史:
核心问题:传统数据库的扩展性差(需要复杂的技术来实现),大数据IO压力大,表结构更改困难。

  1. 第一阶段: 单库:随着访问量的增加出现了性能问题
  2. 第二阶段:缓存:通过缓存,缓解数据库的压力,优化数据结构和索引
  3. 第三阶段:读写分离:数据读写的压力增加,主从复制的读写分离的方案进入视野
  4. 第四阶段:分库分表:主库的写压力过高,开始使用InnoDB引擎,以及分库分表技术
    1.1. 单库架构设计
    在这里插入图片描述
    从所有的业务数据都存放在同一个数据库中的初期阶段,到分布式部署,分散单台服务器的流量,缓解用户和流量增长带来的数据库压力,再到引入缓存,缓解数据库的读压力
    1.2. 主从设计
    在这里插入图片描述
    进一步利用数据库的读写分离,在写数据的时候,访问数据库(Master),主数据库通过主从复制机制将数据更新同步到从数据库(Slave),这样当服务器读数据的时候,就可以通过从数据库获得数据
    1.3、垂直拆分
    在这里插入图片描述
    为了各个业务模块不互相影响,我们把应用层进行垂直拆分, 即把商品模块、订单模块、用户模块都单独作为一个应用系 统,分别读写独立的数据库服务器。
    1.4、水平拆分
    在这里插入图片描述
    MyCat 作为数据库中间件,可以帮我们解决多个数据库不好管理的 问题。只需要统一连接 MyCat 对外提供的一个地址,而 MyCat 则 帮这些项目联系所有后端的 MySQL 数据库。
    2、NOsql = Not-Relational Sql
    Nosql(另一种说法就是Not Only Sql)
    CAP定理:
    一致性:(Consistency)(所有节点在同一时间具有相同的数据)
    可用性:(Availability)(保证每个请求不管成功或者失败都有响应)
    分区容忍:(Partition tolerance)(系统中任意信息的丢失或者失败不会影响系统的继续运作)
    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性 和分区容错性这三个需求,最多只能同时较好的满足两个。
    CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
    AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
    RDBMS—ACID
    原子性(Atomicity)
    一致性(Cons i stenc y)
    隔离性(I solation
    持久性(Durability)
    Nosql—BASE
    Bas ically Availble 基本可用
    Soft- state 软状态/柔性事务。 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
    Eventual Cons i stenc y 最终一 致性, 也是 ACID 的最终目的

2.1、NoSQL的优势
易扩展:
Nosql数据库种类繁多,但是有一个共同的特点都是去掉关系数据库的关系型特性
大数据、高性能:
NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的数据库的结构简单。 一般MySQL使用Quer y Cache,每次表的更新Cache就失效,是一种大粒度的Cache,性能不高。 而NoSQL的Cache是记录级的,是一种细粒度的Cache,性能高很多。
灵活的数据模型:
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式
高可用:
NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。
2.2、Nosql分类
在这里插入图片描述
除了以上的分类,还有对象数据库和xml数据库等,但应用较少
3、Redis使用
3.1、Redis概念和特性
REmote Dictionary Servlet 远程字典服务
是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value 数据库。
不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset(sorted set),hash 等数据结构的存储。
支持数据的备份,即master-slave模式的数据备份。
单进程,默认16个数据库(计数从0开始)。
3.2、Redis安装
Vi r tualBox + Centos7
安装virtualBox (下载地址) l 导入centos7.ova (已配置好的虚拟机镜像)
启动虚拟机,输入账号和密码(root \xxx)
设置网络 获取ip地址 (ifconfig)
安装secureCRT(下载地址
和虚拟机建立连接,修改窗口的编码格式
进入redi s安装目录 cd /us r / local /bin 版本说明:Redi s借鉴了Linux操作系统对于版本号的命名规则,版本号第二位如果是奇数,则为非稳定版 本,如果是偶数,则为稳定版本
3.3、启动入门
服务端通过redis-ser ver启动,默认端口6379
客户端通过redis-cli -p 6379启动,可以操作数据,退出命令为exit
基础CRUD: set / get / del
过期:expire / ttl / persist
键操作:key * / exists / type / randomkey / move key db
切库:dbsize / select / flushdb / flushall
4、Redus数据类型
五大数据类型+四大扩展类型
4.1、数据结构
String(字符串):类似ArrayLi st
Li st(列表):有序可重复,类似LinkedLi st,插入和删除快,复杂度O(1),索引慢,复杂度O(n)
Hash(字典):类似HashMap
Set(集合):无序无重复,类似HashSet
ZSet:(有序集合),有序无重负,类似SortedSet和HashMap的结合,可以扩展使用GEO。
Geo:(位置信息)。
Bitmap:(位图)。
HyperLogLog:(基数统计)。
Stream:(流) Redi s内部使用一个redi sObject对象来表示所有的key和value,redi sObject中,type代表一个value对象 具体是何种数据类型。encoding是不同数据类型在redi s内部的存储方式。 支持命令查看:OBJECT encoding key 其中li st、hash、set、z set为容器型结构,共享两个规则:不存在就创建,没有元素就删除
5、Redis数据结构
(5.1)、String
String类型是Redis最基本的数据类型,一个键最大能存储512MB。String类型是二进制安全的,意思是Redis的String可以包含任何数据
原理:Redis的字符串是动态字符串,内部结构类似于ArrayList,采用预分配冗余空间的方式减少内存的频繁分配。内部为字符串分配的实际空间一般高于字符串长度,当字符串长度<1MB时,扩容方式是直接加倍,如果>1MB,一次扩容只扩1MB,直到扩大到512MB。
命令:
CRUD:set/get/del/getset/setex/setnx
批量:mget/mset/msetnx
字符串操作:append/strlen/getrange/setrange
自增/自减:incr/incrby/decr/decrby

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值