端口6379如何而来
当我们启动Redis的时候启动的是6379端口,为什么是6379呢?
有种说法是6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字.antirez(作者)及其朋友把MERZ当作愚蠢的代名词,但这仅仅只是一种说法,实际上antirez的一篇博文中向大家解释为什么他选择6379作为默认端口号.这篇博文官方的解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因.
默认使用16个数据库
16个数据库的编号类似于数组的下标一样从0开始,进入客户端后默认进入0号库,需要切换到其他数据库时可使用select 下标
来切换
Redis只有一个密码
Redis并没有用户之说,但可以设置一个密码,这个密码是所有数据库都是通用的
Redis是单线程+多路IO复用技术
多路IO复用技术的前提是单线程,只要是线程肯定会遇到锁和堵塞的问题,而多路IO复用就类似于一种监视器,当有多个进程访问redis的时候都会加上一个监视,监视该请求是否请求完毕,如果请求完毕则让Redis直接进行处理,让其没有等待这一步骤。
以前的线程是在接受到请求才去判断该请求是否准备完成,如果没有完成则等待到准备完成,这种现象我们称之为堵塞状态。
虽然是单线程,但是因为多路IO复用的技术让其没有等待这一步骤,让Redis一直工作,不存在堵塞状态,这种情况下的单线程要比多线程还快
堵塞IO,非堵塞IO与IO多路复用
至于堵塞IO和非堵塞IO的理解可以参考尚硅谷的一个解释,挺通俗易懂的
串行 VS 多线程+锁(memcached) VS 单线程+多路IO服用(Redis)
Redis的五大数据类型
- String
- set
- list
- hash
- zset
注意:
- 这五大数据类型指的是key-value中的value
- Redis虽然支持一键多值,但是这些值只能是String类型list,set,hash,zset只能存储字符串