redis(NOSQL-redis简介)


NOSQL

主要解决性能性问题

解决CPU和内存压力

问题:session共享的问题

1、存储到客户端(存储到cookie中),每次请求都携带cookie ,缺点:安全性低

2、session复制(第一台服务器登录了,产生了session对象,然后把seesion复制多份到其他服务器中),缺点:session数据相同 数据浪费了

3、NOSQL数据库 ,把用户信息存放在NOSQL中,NOSQL不需要IO操作,数据存放在内存当中

解决IO压力

把频繁进行查询的数据放在缓存数据库中,放完之后每次从缓存数据库查询,查询之后能极大提高查询速度,把【专门的数据】进行特定的存储

NOSQL是什么有什么特点

NOT ONLY SQL 不仅仅是sql,泛指非关系型数据库,以简单的KEY-VALUE的方式进行存储增加了数据库的扩展能力

1、不遵循sql标准

2、不支持ACID(事务)

3、远超于SQL性能(key-value的原因)

NOSQL的使用场景

1、对数据的高并发的读写

2、海量数据的读写

3、对数据的高扩展性(电商秒杀功能)

NOSQL不适用的场景

1、需要事务支持

2、基于SQL的结构化查询存储,处理复杂关系,需要即席查询

3、(用不着SQL的和用了sql也不行的情况,请考虑NOSQL)

其他的NOSQL数据库

1、Memcache

数据存放在内存中,数据不持久化,支持简单的key-value 只支持string类型

2、redis

覆盖了Memcachce的绝大部分功能,数据持久化,支持各种数据类型(string,list(链表),set(集合),zset(有序集合),hash(哈希类型)),这些数据类型都支持push/pop,add/remove,及取并集,差集以及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序,与Memcache一样数据都存放在内存中,区别就是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了Master-salve(主从)同步的操作

3、MongoDb

文档型数据库,存储结构类似于json 存储的数据更加复杂。

行式存储数据库

有很大的性能问题

列式数据库

redis的安装

windows下安装

1、下载安装包:

https://github.com/redis/redis

2、解压到自己电脑的环境目录

3、启动server.exe

4、各个文件作用

redis相关介绍知识

1、端口6379从何而来

Merz :在9键键盘上的数字

2、默认16个数据库,类似于数组下标从0开始,初始默认使用0号库

使用命令 select 来进行切换数据库 如:select 8

统一密码管理,所有数据库同样密码

dbsize查看当前数据库的key数量

flushdb 清空当前数据库

flushall 通杀全部库

redis 是单线程 + 多路IO复用技术

多路复用是指使用一个线程来检查多个文件描述符(Soket) 的就绪状态 比如调用 select和 poll 函数,传入多个文件描述符。如果有一个文件描述符就位,则返回否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)

串行 VS 多线程 +锁(memcachce) VS 单线程 +多路IO复用(redis)

串行:羊肉串 吃的话首先吃的第一个,再吃第二个 接着往下类推

多线程+锁:同时有多个操作,并且加锁

单线程 +多路IO复用:买票例子(redis底层 技术)

redis Key键的基本操作

keys * 查看当前库中有哪些key

set key value 设置值

exists key 查看key 是否存在

del key 删除指定key的值(直接删除)

unlink key 根据value选择非阻塞删除(非阻塞删除(重要):从keyspace元数据中删除,真正的删除会在后续异步操作)

expire key 10 设置过期时间 单位为 秒

ttl key 查看还有多少秒过期 -1 表示永不过期 -2 表示已经过期 其他表示剩余秒数

dbsize 查看当前数据库的key数量

flushdb 清空当前数据库(用得少,慎用)

flushall 通杀全部库(用得少,慎用)