Redis缓存数据库(一)
2024-10-08 07:05:49
先导知识:Memcache
Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。
已经有了Memcache,为什么还要用Redis呢?
下面Memcache的缺点:
- 不支持数据持久化存储
- 不支持主从
- 不支持分片
而对比Redis数据库,以上三点都支持,所以要使用redis。
问题一:为什么redis能这么快?
Redis的访问速度可达 10万+QPS(query per second,每秒内查询次数)。
- 完全基于内存:绝大部分请求是纯粹的内存操作,不受限于硬盘读取速度,故而执行效率高
- 数据结构简单,是(key,value)形式,对数据的操作也简单
- 采用单线程也能处理高并发请求
- 相对于传统的阻塞I/O,Redis使用多路I/O复用模型,非阻塞I/O
- 具有原子性操作。
问题二:Redis采用的多路I/O复用函数?
多路I/O复用函数有:epoll、kqueue、evport、select 链接:多路I/O复用技术
- 因地制宜,有的系统只有select
- 优先选择时间复杂度为O(1)的函数作为底层实现
- 以时间复杂度为O(n)的select作为保底
- 基于reactor设计模式监听I/O事件
问题三:Redis的数据类型有哪些?(重点!!)
- string:最基本的数据类型,二进制安全,可以存储任何格式的数据(jpg图片,序列化的对象)
- hash:string元素组成的字典,适合用于存储对象
- list:列表,特点:先进先出、有序(按添加顺序)、可重复
- set:string元素组成的无序集合,通过hash实现,不允许重复
- sorted set:通过分数来为集合的成员进行从小到大的排序
- 用于计数的HyperLogLog
- 用于支持存储地理位置信息的Geo
Redis的底层数据类型基础:
1、简单动态字符串;2、链表;3、字典;4、跳跃表
5、整数集合;6、压缩列表;7、对象
最新文章
- XidianOJ 1063 Chemistry Problem
- 常用CSS优化总结——网络性能与语法性能建议
- Laravel环境配置之安装Homestead
- poj 3264 Balanced Lineup (线段树)
- Android弹出选项框及指示箭头动画选择
- SVN弱密码扫描(Python)
- VS2010中的调试技巧
- How do I use a host name to look up an IP address?
- Java基础知识强化之集合框架笔记63:Map集合之HashMap嵌套ArrayList
- WAMP集成环境
- Android视频录制
- web 性能优化指南阅读笔记
- elementUI源码修改定制
- sql server对已创建的表增加属性(自动增序)
- HZNU ACM一日游 2019.3.17 【2,4,6-三硝基甲苯(TNT)】
- [C语言]数据类型与计算
- SQL TUNING——从近半小时到几十毫秒的一次优化
- linux命令(26):Bash Shell 获取进程 PID
- Linux内核分析 05
- jquery实现简单轮播