Redis
Redis介绍前言
单机Mysql缺点:
- 数据量太大,一个机器太难承担
- 数据量的索引太大,一个机器的内存放不下
- 访问量(读写)太大,一个服务器承受不住
解决办法: - 缓存+读写分离
网站上的访问80%以上都是在读、每次都去查询数据库,效率很低,引入缓存机制,第一次去MySQL中读取数据,将数据返回给用户的同时,将数据在缓存中存储下来,第二次访问,就可以直接在缓存中读取 - 分库分表+集群
分库分表+水平拆分
NOSQL
NOSQL(NOT Only SQL) 泛指非关系型数据库
一,NoSQL特点
- 方便扩展(数据之间没有关系)
- 大数据量高性能(redis 写8w/s,读 11W/s)
- 数据类型是多样性的,不需要事先设计数据库,随取随用
- 存储方式多样,键值对、列存储、文档存储、图形数据库
- 没有固定的查询语句
二,NoSQL四大分类
Redis 入门
Redis基本概念
Redis是一个开源的(BSD协议),内存中的数据结构存储系统,可以用来作为数据库,缓存和消息中间件
它支持多种类型的数据结构,如 字符串(strings),散列(hashes), 列表(lists), 集合(sets),有序集合(sorted sets)与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis 内置了复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)
和不同级别的 磁盘持久化(persistence)–RDB和AOP,
并通过Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis的基本操作
Redis默认是有16个数据库,默认使用的是第0个数据库,可以通过select 切换数据库,Redis的命令大小写不敏感。
切换数据库
格式:select index
查看数据库大小
格式:dbsize
查看所有的keys
格式:keys *
清除数据库
清除当前数据库:flushdb
清除所有数据库:flushall
Redis单线程
Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈就是根据机器的内存和网络带宽,CPU不是性能瓶颈,就可以使用单线程的
Redis的数据都是存放在内存中,所以说单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换耗时,对于内存系统而言,没有上下文切换的效率就是最高的,多次读写都是在同一个CPU。
Redis五种基本类型
基本命令
SET 设置key
GET 查看key对应值
EXPIRE 设置key的过期时间
TTL 查看key剩余时间
EXISTS 判断当前key是否存在
KEYS * 查看所有的key
DEL 删除当前key
TYPE 查看key存储的value类型
字符串 string
set get
设置值 set key value
获取值 get key