Redis 简解
来源:互联网 发布:高新区行知小学好不好 编辑:程序博客网 时间:2024/06/06 08:27
redis是key-value内存数据库
数据类型
string(字符串)、list(双向链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型);
存储原理
在Redis中,并不是所有的数据都一直存储在内存中的,当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的。同时由于Redis将内存中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个操作,直到子线程完成swap操作后才可以进行修改。当从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方。 这里就存在一个I/O线程池的问题。在默认的情况下,Redis会出现阻塞,即完成所有的swap文件加载后才会相应。这种策略在客户端的数量较小,进行批量操作的时候比较合适。但是如果将Redis应用在一个大型的网站应用程序中,这显然是无法满足大并发的情况的。所以Redis运行我们设置I/O线程池的大小,对需要从swap文件中加载相应数据的读取请求进行并发操作,减少阻塞的时间。
2、Redis使用单线程的IO复用模型,将速度优势发挥到最大,而Memcached可以使用多核,所以在比较上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis;
3、Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached应用场景和数据特性有关。
4、对数据持久化和数据主从同步,更适合作为存储;
5、Redis使用现场申请内存的方式来存储数据,不会剔除任何非临时数据
6、数据的一致性方面:Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断
7、Redis可以实现主从复制,实现故障恢复;
8、redis使用了两种文件格式:全量数据和增量请求。
全量数据格式:把内存中的数据写入磁盘,便于下次读取文件进行加载;
增量请求文件:把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。
9、redis的存储分为内存存储、磁盘存储和log文件三部分
10、Redis支持数据的备份,即master-slave模式的数据备份。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方
11、Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储。
- Redis 简解
- Redis
- redis
- Redis
- redis
- Redis
- redis
- Redis
- redis
- REDIS
- Redis
- Redis
- redis
- Redis
- Redis
- Redis
- Redis
- Redis
- 常用Linux进程及作业管理命令
- 类的虚继承
- UESTC-1633 去年春恨却来时,落花人独立,微雨燕双飞(取模最短路)
- C# 生成软件注册码
- Error:SSL peer shut down incorrectly(完美解决)
- Redis 简解
- java-Collection(List、Set)
- 获取当前手机App版本以及AppStore中的最新版本,判断是否需要更新
- 在没有个人/公司网站的情况下,如何利用同一个二维码自动识别手机系统(Android/IOS)跳转不同下载页面
- IIS连接数据库:数据库连接出错,请检查连接字串
- 知识图谱相关介绍
- 以最大连续和为例的算法分析
- 微信开放平台修改微信分享的应用小图标与应用名称,应用名称更改了应用小图标未更改的问题
- Java循环