NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。

Redis


Redis是一个开源的key_value存储系统。和Memcached类似,它支持存储从value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set–有序的集合)和hash(哈希类型)。
配合关系型数据库做高速缓存
多样的数据结构存储持久化数据

查看默认安装目录:

前台启动(不推荐)
前台启动,命令行窗口不能关闭,否则服务器停止

后台启动(推荐)
备份redis.conf配置文件
cp /opt/redis-6.7.2/ /myredis
将./myredis/redis.conf文件中的daemonize no修改为yes
启动redis
redis-server /myredis/redis.conf
ps -ef|grep redis

用客户端访问:redis-cli

Redis关闭:
单实例关闭:redis-cli shutdown
多实例关闭,指定端口关闭:redis-cli -p 6379[ port ] shutdown

数据库相关介绍
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符。**如果有一个文件描述符就绪,则返回,否则阻塞直到超时。**得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)
串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis)

redis基于reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器,file event handler。这个文件事件处理器,是单线程的,redis才叫做单线程的模型,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理。
回调机制:
如果被监听的socket准备好执行accept、read、write、close等操作的时候,跟操作对应的文件事件就会产生,这个时候文件事件处理器就会调用之前关联好的事件处理器来处理这个事件。
就绪队列
多个socket可能并发的产生不同的操作,每个操作对应不同的文件事件,但是IO多路复用程序会监听多个socket,但是会将socket放入一个队列中排队,这个队列叫做就绪队列,每次从队列中取出一个socket给事件分派器,事件分派器把socket给对应的事件处理器。
一个socket的事件处理完之后,IO多路复用程序才会将队列中的下一个socket给事件分派器。文件事件分派器会根据每个socket当前产生的事件,来选择对应的事件处理器来处理。