Reids简介
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis的诞生
Redis之父antirez,了不起。
为什么叫Redis?
Remote Dictionary Service KV - 远程字典服务
NoSQL与SQL的区别
传统关系型数据库与非关系型数据库的区别
Non-relational
not only sql
关系型数据库特点
- 存储数据结构基于表格(table),基于行的结构存储的,是二维的
- 结构化数据,固定的模式(schema),表结构一旦创建,存储的数据都得适应其结构
- 表与表之间存在关联关系的
- 支持SQL,结构化查询语言
- 支持事务,ACID - 酸,通过事务,可以严格控制数据的一致性
使用关系型数据库的一些限制
- 只能向上扩容,并且得通过一些特定的技术手段实现,譬如分库分表
- 表结构修改麻烦
- 高并发的场景下,磁盘的读写压力增大
非关系型数据库特点
- 存储的数据为非结构化的
- 表与表之间没有关联,扩展性强
- 没有事务的特性,BASE - 碱
- 数据没有存储在磁盘,支持海量数据存储和高并发的操作
- 支持分布式,实现水平扩容,分片的存储
TiDB结合了关系和非关系??
TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。 - 《https://pingcap.com/docs-cn/v3.0/》
Redis的特性
为什么要用Redis?
- 高吞吐量,官方给我出的数据是每秒十万次
- 丰富的数据类型
- 相比hashmap,支持分布式,应用共享
- 提供了丰富的特性,比如:持久化机制、过期策略…
- 支持多种编程语言操作的客户端
- 高可用和扩容的集群策略,譬如:哨兵、cluster…
Redis的安装和配置(单机版)
由于最近笔记本要重装系统,把vmware卸载了,所以用Window版 Redis示例(Liunx中安装Reids点这里)
1. 下载Redis
之前https://redis.io/download官网我记得有windows版的链接地址,现在竟然找不到了。
github下载地址:https://github.com/microsoftarchive/redis/releases
2. 安装
linux环境下,安装redis还需安装gcc依赖和编译的过程。windows环境就不讲究了,我偷懒直接用了Redis-x64-3.2.100.msi安装版,其实与zip版没有啥本质区别。
3. 配置文件
略,windows环境为了方便学习,也无需设置后台启动,ip绑定了,如果喜欢可以去安装目录或者解压目录中redis.windows.conf文件设置个访问密码。
requirepass yourpassword
4. 服务启动
到安装目录或者解压目录中执行redis-server.exe即可启动redis server,默认指定的配置文件就是redis.windows.conf,如图:
服务启动成功后,通过redis-cli.exe即可进入客户端,进行命令操作。
通过RedisDesktopManager工具可以直观的看到,redis默认有16个库(0-15),可以在配置文件中修改,默认使用的第一个db0:
databases 16
因为没有完全隔离,不像数据库的 database,不适合把不同的库分配给不同的业务 使用。
Redis 是字典结构的存储方式,采用 key-value 存储。key 和 value 的最大长度限制 是 512M(来自官网 https://redis.io/topics/data-types-intro/)。
键的基本操作,命令参考:http://redisdoc.com/index.html
Redis的数据类型
每种数据类型的基本操作和原理不做过多记录了,理解为主,还有一些源码设计上的骚操作,了解下就够了。
常用的五种数据结构:
string、hashs、lists、sets、sorted sets
Redis的应用场景
- 缓存 - 提升热数据的访问速度
- 共享数据 - 如session共享
- 全局ID - 分布式全局ID的生成,INT 类型,INCRBY,利用原子性
- 分布式锁 - STRING 类型 setnx 方法
- 在线用户数统计和计数器 - 通过INCRBY
- 队列、栈 - List的特性
- 消息队列
- 服务注册与发现 - dubbo支持redis作为注册中心
- 购物车 - hash结构的数据存储
- 用户消息时间线 - 这是哪个??
- 抽奖 - Set特性
- 点赞、签到、打卡
- 商品打标签
- 多条件列表筛选 - 电商查询、租房查询等
- 排行榜 - sorted sets