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读写瓶颈问题,针对业务量达到亿级的应用,常规项目没有必要使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下