Redis VS Memcached
创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、成都网站建设、做网站、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。通过对比学习,可以加深理解组件的特性。下面两段文字,摘自各自的官方文档。
http://www.redis.io/
http://memcached.org/
Redis官方简介
Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
Memcached官方简介
Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages.
两者主要有以下区别(也是redis更优秀的地方)
redis可以用来做存储(storge), 而memccached是用来做缓存(cache)
这个特点主要因为其有”持久化”的功能.
存储的数据有”结构”,对于memcached来说,存储的数据,只有1种类型--”字符串”,
而redis则可以存储字符串,链表,哈希结构,集合,有序集合.
redis服务端支持高可用。
1.Redis安装与启动
比memcached安装还简单。
$ cd /usr/local/src $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 #如果要执行make test测试,需要安装tcl $ yum install tcl $ make PREFIX=/usr/local/redis install $ cp /usr/local/src/redis-3.2.3/redis.conf /usr/local/redis/
工具列表
$ ls /usr/local/redis/bin/ redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
redis-benchmark 性能测试工具
redis-check-aof 日志文件检测工(比如断电造成日志损坏,可以检测并修复)
redis-check-dump 快照文件检测工具,效果类上
redis-cli 客户端
redis-server 服务端
redis 版hello world
$ /usr/local/redis/bin/redis-server $ /usr/local/redis/bin/redis-cli redis> set foo bar OK redis> get foo "bar"
2.配置文件(redis.conf)
由于redis比memcached功能更全,命令更多,配置参数也响应更多。简单分类下
模块 | 作用 | 参数 |
INCLUDES | 包含 | |
NETWORK | 网络 | |
GENERAL | 公共 | daemonize no #默认情况下redis 不是以守护进程的模式运行。 pidfile /var/run/redis.pid port 6379 logfile stdout logfile stdout |
REPLICATION | 复制 | slaveof #只在slave添加该参数,用于创建一个镜像服务; masterauth |
SNAPSHOTTING | 快照 将内存中的数据刷写到磁盘上 | save 触发刷新操作 stop-writes-on-bgsave-error yes rdbcompression yes dbfilename dump.rdb repl-timeout 60 |
SECURITY | 安全 | #requirepass foobared 配置redis访问密码的参数 #rename-command 重命名或禁用某些命令 |
LIMITS | 限制 | maxclients 10000 #大并发连接数,默认为一万,这个跟系统本身的 open-file-limit 有关 maxmemory maxmemory-policy |
APPEND ONLY MODE | appendfilename appendonly.aof #append file 的文件名称 appendfsync everysec #append log AOF日志文件同步的频率刷写磁盘的频率 fsync() 请求操作系统马上把数据写到磁盘上 Redis支持三种不同的模式: no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。 always:每次写操作都立刻写入到aof文件。慢,但是最安全。 everysec:每秒写一次。折衷方案。 默认的 "everysec" 通常来说能在速度和数据安全性之间取得比较好的平衡。 no-appendfsync-on-rewrite no # 如果AOF的同步策略设置成 "always" 或者 "everysec",那么后台的存储进程(后台存储或写入AOF日志)会产生很多磁盘I/O开销。 某些Linux的配置下会使Redis因为 fsync() 而阻塞很久。 目前对这个情况还没有完美修正,甚至不同线程的 fsync() 会阻塞我们的 write(2) 请求。 为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止 fsync()。 这就意味着如果有子进程在进行保存操作,那么Redis就处于"不可同步"的状态。 这实际上是说,在最差的情况下可能会丢掉30秒钟的日志数据。(默认Linux设定) 如果有延迟的问题那就把这个设为 "yes",否则就保持 "no",这是保存持久数据的最安全的方式。 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb #AOF文件自动重写。 | |
LUA SCRIPTING | LUA脚本 | |
REDIS CLUSTER | 集群 |
用于开实例的集群模式 cluster-conf-file 设定了保存节点配置文件的路径, 默认值为 nodes.conf 。 cluster-node-timeout 15000 #节点互连超时的阀值 cluster-slave-validity-factor slave节点检测因数,开始failover的超时时限是通过factor与timeout的乘积来确定的。 cluster-require-full-coverage |
SLOW LOG | 日志 | #Redis慢查询日志可以记录超过指定时间的查询。运行时间不包括各种I/O时间。 例如:连接客户端,发送响应数据等。只计算命令运行的实际时间(这是唯一一种命令运行线程阻塞而无法同时为其他请求服务的场景 slowlog-log-slower-than 10000(单位微秒) #慢查询日志长度,这个长度没有限制。只要有足够的内存就行可以通过 SLOWLOG RESET 来释放内存(当一个新的命令被写进日志的时候,最老的那个记录会被删掉。)。 slowlog-max-len 128 (ps:日志居然是在内存里面的,) 对于虚拟内存的使用, ### 警告!虚拟内存在Redis 2.4是反对的。 ### 非常不鼓励使用虚拟内存!! 在2.6中 根本没有其相关配置, |
LATENCY MONITOR | 监控报告 | ... |
EVENT NOTIFICATION | 通知,消息队列 | ... |
ADVANCED CONFIG | 高级 | ... |
参考资源
http://weipengfei.blog.51cto.com/1511707/1217504
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款