Redis、memcache
来源:互联网 发布:一个端口的tcp连接数 编辑:程序博客网 时间:2024/05/16 14:42
Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。redis的存储分为内存存储、磁盘存储和log文件三部分,这可通过redies.conf来配置。
Redis的数据全部放在内存带来了高速的性能,但是也带来一些不合理之处。比如一个中型网站有100万注册用户,如果这些资料要用Redis来存储,内存的容量必须能够容纳这100万用户。但是业务实际情况是100万用户只有5万活跃用户,1周来访问过1次的也只有15万用户,因此全部100万用户的数据都放在内存有不合理之处,RAM需要为冷数据买单。这跟操作系统非常相似,操作系统所有应用访问的数据都在内存,但是如果物理内存容纳不下新的数据,操作系统会智能将部分长期没有访问的数据交换到磁盘,为新的应用留出空间。现代操作系统给应用提供的并不是物理内存,而是虚拟内存(Virtual Memory)的概念。基于相同的考虑,Redis 2.0也增加了VM特性。让Redis数据容量突破了物理内存的限制。并实现了数据冷热分离。
作为一个key value存在,很多开发者自然的使用set/get方式来使用Redis,实际上这并不是最优化的使用方法。尤其在未启用VM情况下,Redis全部数据需要放入内存,节约内存尤其重要。假如一个key-value单元需要最小占用512字节,即使只存一个字节也占了512字节。这时候就可以把key复用,几个key-value放入一个key中,value再作为一个set存入,这就是为了节约内存,建议使用hashset而不是set/get的方式来使用Redis。
Memcache
memcache是一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
Redies与Memcache区别
- redis/memcache
- Redis&Memcache
- memcache redis
- memcache/redis
- Redis、memcache
- redis memcache
- redis/memcache
- memcache redis
- 【memcache/redis】memcache常见问题汇总
- memcache还是redis
- memcache与redis对比
- redis mongodb memcache 笔记
- redis,memcache,mongodb对比
- Redis 与 Memcache
- 关于mongodb ,redis,memcache
- redis和memcache区别
- Redis,memcache,MongoDB区别
- memcache和redis区别
- 软件架构设计之常用架构模式介绍
- 判断一个整数转换成二进制后1的个数
- auto_ptr智能指针
- 简单二叉树的创建,连接树结点,二叉树的深度(转载)
- java--通过DOM4J方式生成rss文件简单实例
- Redis、memcache
- js 数组
- tinyos 串口通信
- 图像处理(二十三)基于调色板的图像Recoloring-Siggraph 2015
- Clos Network 与 Leaf Spine 架构
- java中的线程(三)——控制线程的几种简单的方法和线程同步
- 每周前端知识整理(15.10.11)
- SQL的主键和外键的作用
- 两个不相关Activity之间的通信