Redis基础

redis是一个基于键值对的NoSQL数据库

redis的数据类型:

键的类型只能为字符串
值的类型有5种: 字符串String 哈希hash 列表list 集合set 有序集合zset

redis为什么快?

1)redis使用了单线程架构和I/O多路复用模型
2)纯内存访问
3)单线程避免了线程上下文切换带来的资源消耗

 redis常用命令

查看所有key
keys *

查看当前key是否存在 exists key 删除数据 del key

查看key的过期剩余时间
ttl key

 redis单线程?

1.单线程模型
  Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。
其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。
但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。

2.redis 在处理客户端的请求时,包括获取(Socket 读)、解析、执行、内容返回(Socket 写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。
但如果严格来讲从 Redis 4.0 之后并不是单线程,除了主线程外,它也有后台线程在处理一些较为缓慢的操作,例如清理脏数据、无用连接的释放、大 Key 的删除等等

3.redis6.0开始支持多线程, 默认多线程是禁用的
1)如需开启需要修改 redis.conf 配置文件:io-threads-do-reads yes,
2)开启多线程后,还需要设置线程数,否则是不生效的。同样修改 redis.conf 配置文件: io-threads 4 (4核的机器建议设置为 2 或 3 个线程,8 核的建议设置为 6 个线程,线程数一定要小于机器核数)
3)虽然开了多线程,但其实还是单线程处理逻辑,不用担心线程安全问题
4)多线程主要解决I/O读写瓶颈问题,针对业务量达到亿级的应用,常规项目没有必要使用

 

posted @ 2021-07-14 17:17  Sherlock先生  阅读(38)  评论(0编辑  收藏  举报