Redis为什么使用的是K-V,而不是sql关系?
redis是一部分数据,不是全部,因为数据不全面,很难去组建数据关系
worker 是单线程,但是 IO是多线程
多个用户并发的向内核发送数据,epoll接收请求,因为worker是单线程的,所以IO读取是串行化的,在worker内部也是串行化计算的
并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
IO多线程:
连接池和线程池是两个不同的概念
redis的使用场景:
五个Value类型
String, List, hash, set, sorted set zset
中 字在 UTF-8编码下,redis中占了三个字节,
gbk中占了2个字节
二进制安全
二进制安全功能(binary- safe function)是指在一个二进制文件上所执行的不更改文件内容的功能或者操作。这能够保证文件不会因为某些操作而遭到损坏。二进制数据是按照一串0和 1的形式编码的。而绝大多数的程序会给某些特殊的比特串赋予不同的格式代码,所以当用户使用一个程序读取一个二进制文件时,该文件会被按照这个程序的规则 进行解释。如果这个程序所使用的格式编码和文件被写入的格式编码一致,那么这个文件可以被正常读取,否则该文件的格式代码之中会被附加一些无意义的符号, 也可能会导致文件损坏。
LIST:
list可以模拟 栈和队列和数组
模拟栈: 同向压入lpush,弹出lpop
异向:队列
lindex():数组
ltrim: 优化redis内存量
HASH
SET: