`

简单笔记key-value存储系统----redis

    博客分类:
  • web
阅读更多
  前几天在阿里云上部署一个开源项目,时常遇到内存无法分配的问题,结果导致项目跑不起来的杯具,之前在谷歌论坛上也听过网友说,canvas部署会占用比较大的内存,我们也是从512M添加到1G内存,项目才能如愿的跑起来,可高兴没有多久,杯具又出现了,当访问量增大点时,内存又出现无法分配问题,等过段时间访问又可以了,我想问题应该出现在缓存上面,项目使用的是redis作为cache,之前对这个不了解,今天在群里请教了两位大神,总算是明白了些,记下笔记,方便日后查询。

  redis,百度百科是这样描述:redis是一个key-value存储系统,一个高性能的key-value数据库,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型),它与另外一个Memcached(一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载)相似。只是Mencached支持的value类型只有string(字符串),相对简单,理解够快,两者之间的对比我也找到些资料,具体这里不做描述,只针对redis,两者之间的对比可参看如下地址:

http://stackoverflow.com/questions/10558465/memcache-vs-redis
http://oldblog.antirez.com/post/update-on-memcached-redis-benchmark.html
http://hi.baidu.com/silverd/item/29a974143cf73a727b5f25c9
http://oldblog.antirez.com/post/redis-memcached-benchmark.html

  从大神那里了解到,redis在大数据处理,数据交换,缓存的时候用到,具有持久化的能力,多数情况下当做缓存、内存数据库使用。redis比较成熟,性能也不错,和持久化数据库差不多,只不过其他的数据库把数据存在硬盘中,而redis把数据存在内存中,方便你去操作数据。比如对数据进行:筛选、操作、取值、计算等,不同的应用场景使用的方式也不一样,因为放内存中读取的速度够快,所以一般做缓存数据。 比如 rails里面的 session 就可以使用redis,这些数据每次都要使用,放在硬盘数据库中读取是个麻烦。一旦遇到大量访问的时候硬盘的性能就很明显了。

  当做缓存使用时候,redis要合理规划内存空间,看项目要用到多少就划分多少,使用的时候有两个原则,一个是数据的销毁周期,一个是资源占用的内存空间大小。随着你存入的数据和销毁数据的速度不成正比的时候,那么你的数据将会持续占用资源,redis有个占用资源上线的,默认是最大内存(可配置),当占用完了就不会分配内存了,会给出一个异常告诉调用程序,等待有资源过期被销毁掉,然后再分配给你。如果你存入的数据大于销毁的数据的时候,你就要考虑扩容了和优化销毁能力。这个时候持久化功能就凸现了,把过多的数据持久化到硬盘。

  redis不仅可以expire还可以LRU,具体资料参看:
  http://oldblog.antirez.com/post/redis-as-LRU-cache.html
 
分享到:
评论

相关推荐

    Redis全套学习笔记 (带章节目录) 完整版pdf

    redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,...

    狂神说Redis笔记.pdf

    翻译为:Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。 官网:https://redis.io Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以...

    Redis笔记以及详细安装教程

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供...

    redis 缓存技术学习笔记

    edis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富...

    Redis全套学习笔记 完整版pdf.rar

    Redis全套学习笔记 完整版pdf.rar set:添加键值对 get:获取值 apend:追价值 strlen:获取值的长度 setnx:key不存在时,设置key的值 incr:原子递增1 decr:原子递减1 incrby/decrby:递增或者递减指定的数字 ...

    redis学习笔记

    redis学习笔记redis 是一个开源的 key-value 数据库。它又经常被认为是一个数据结构服务器。 因为它的 value 不仅包括基本的 string 类型还有 list,set ,sorted set 和 hash 类型。当 然这些类型的元素也都是 string...

    Redis全套学习笔记

    redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不...

    redis笔记以及面试题.md

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/...

    Redis非关系型数据库笔记-数据持久化-主从同步-缓存-笔记-五大数据类型-三大特殊数据类型

    Redis(Remote Dictionary Server)是一个开源的、使用ANSI C语言编写的、支持网络连接的、基于内存并可持久化的日志型Key-Value数据库,它提供了多种语言的API。Redis的主要特点包括: 数据类型丰富:Redis支持...

    redis学习笔记(详细总结)

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持存储的 value 类型相对更多,包括 ...

    Redis心得笔记.docx

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis使用的一些心得体会的笔记。

    Redis设计与实现学习思维笔记.xmind

    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的...

    redis-demo:Redis学习项目,包括1)Redis笔记;2)Jedis的基本使用;3)Spring Data Redis的基本使用(基于SpringBoot)

    1 NoSQL 1.1 需求 高并发读写 海量数据的高效率存储与访问 高可扩展性和高可用性 1.2 产品分类 分类 代表产品 典型应用场景 ...Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Valu

    redis实战电子书

    Key-value,NoSQL,Redis,不用积分,帮大家共享一下

    Redis入门基础1

    Redis入门基础第1节 Redis笔记概述1.1什么是Redis·高性能Key-Value服务器,特定场景10万OPS·多种数据结构,字符串、哈希、链表、有序

    Redis服务器笔记

    redis是一个高性能的key-value存储系统,能够作为缓存框架和队列 但是由于他是一个内存内存系统,这些数据还是要存储到数据库中的 作为缓存框架: create/updae/delete—同时存到redis和数据库 query–先从redis查,...

    Redis的笔记

    如果您喜欢在下的笔记,请下载查看。...Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

    redis-learning:Redis服务

    redis-learning redis的学习笔记 更新日志:: 1.利用redis 实现消息队列功能。 2.利用redis 实现key value 简单的缓存功能。后期引入注解

    SpringBoot笔记-下篇.pdf

    • Entry是一个存储在Cache中的key-value对。 • Expiry 每一 个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期 的状态。一旦过期,条 目将不可访问、更新和删除。缓存有效期可以通过...

Global site tag (gtag.js) - Google Analytics