赞
踩
1.非关系型的键值对数据库,可以根据键以O(1)的时间复杂度取出或插入关联值
2.Redis的数据是存在内存中的
3.键值对中键的类型可以是字符串,整型,浮点型等,且键是唯一的,但是最终存储形式都会转换为string类型
4.键值对中的值类型可以使string,hash,list,set,sorted set等
5.Redis内置了复制,磁盘持久化,LUA脚本,事务,SSL,ACLs,客户端代理等功能
6.通过Redis哨兵和自动分区提供高可用性
Redis执行步骤
步骤一:client通过网络向Redis发送一条命令
步骤二:由于Redis是单线程应用,可以把Redis想像成一个队列,client执行的所有命令都在排队等着server端执行
步骤三:Redis服务端按顺序执行命令
步骤四:server端把命令结果通过网络返回给client
Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务
单线程和多线程的区别:
(1)需要完成一个项目,一个人做的话需要10天。10个人同时做的话需要1天(简单理解单线程和多线程)
(2)单线程就是每次只处理一条请求。多线程同时处理多条请求
(3)单线程处理完所有任务耗时长,但是安全
(4)多线程处理完所有任务耗时短,但是不安全。(也有可能耗时长,由于是同时进行,所以有可能争抢同一块资源,造成死循环)
(5)单线程避免了线程切换和竞态产生的消耗
Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。
(6)单线程可以简化数据结构和算法的实现。
(1)单线程架构,避免了线程切换和竞态产生的消耗
(2)将数据全部存储在内存中,内存访问快
(3)非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,避免在网络I/O上浪费过多的时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。