关于Memcache与Redis

本文尝试总结Memcache与Redis之间的相同点及不一样点,以及关于二者的一些注意问题。html

相同


  • 同为内存型数据库
  • 当数据写满后均以LRU机制替换数据
  • 分布式支持

不一样


Memcache

  • 多线程
  • 最大key为512B,最大value为1M

Redis

  • 单线程
Redis是单线程因此总体性能不如Memcache,可是平均到每一个核上Redis在存储小数据时比Memcached性能更高。因为单线程多I/O串行限制,Redis在存储更大的数据(大于100k)时性能逊于Memcache。
  • 最大key为512M,最大value为512M
  • 持久化
  • 更丰富的数据类型
  1. Hashes
  2. Sorted Sets
  3. Lists
  4. Sets
  • Lua脚本支持
可在Redis中执行Lua脚本,例如用Lua实现原子锁。  
  • 关于Redis的delete
Redis的delete操做会有毫秒级的延迟,由于Redis的数据回收机制并不是实时触发而是定时检查所需回收的数据是否达到某个筏值,达到才会触发数据回收。
  • 关于Redis执行顺序
根据 这里( http://www.redis.cn/topics/clients.html )文档翻译:“该顺序是由客户端 socket 文件描述符的数字大小及核心报告客户端事件的顺序决定的,所以顺序能够当作不肯定的。”,顺序在大致上会呈“先到先做的原则”,但小处上呈现的应该是无序性。
  • 关于Redis最大链接
若是考虑“ TCP 的 TIME WAIT ”问题,在 MBP 上测试的结果是 17000 左右的请求数就会出现“ Can't assign requested address ”的错误。但这个实际上是受限于操做系统最大文件描述符,在程序上可以使用长连接或单例模式优化。在系统上可经过修改最大文件描述符或减小TCP TIMEWAIT的回收时间。

[暂时想到这些,想到继续补充]redis

源地址 By佐柱数据库

转载请注明出处,也欢迎偶尔逛逛个人小站,谢谢 :)多线程

相关文章
相关标签/搜索