• Redis和Memcache的详细理解与区别


    1. Redis

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis内置了复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的磁盘持久化(persistence), 并通过Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。

    1.1 Redis的特性

    Redis支持永久性操作,可以从内存永久化保存在磁盘,下次重启可以从磁盘中恢复数据
    除去K-V形式之外,还支持list,set,zset,hash等多种数据结构
    支持主从架构数据备份

    1.2 Redis各种数据类型应用和实现方式

    • String:数据结构是简单的K-V类型,v可以是数据,也可以是数字(常用操作:set,get,decr,incr,mget)
    • list :lpush/rpush,lpop/rpop,lpoprpush,lrange
    • hash:hset,hgetall,hget
    • set:sadd,spop,smembers,sunion,sinter
    • zset:zadd,zrank,zrange,zrem,zcard

    2. Memcache

    Memcache是一个高性能,分布式内存对象缓存系统,通过在内存中缓存一个巨大的hash表,他能够存储包括图像,文件,索引,sql语句结果等数据,可以理解为它理解为一个为提升读取效率的数据容器,先将数据从数据库提取到内存中,然后在内存中读取,从而提升读取效率

    2.1 Memcache的特性

    使用物理内存作为缓存区,可独立运行在服务器上,每个进程最大内存为2G。如果想缓存更多的数据,可以开辟更多的Memcache进程(不同端口)或者使用分布式Memcache进行缓存。
    使用K-V形式的方式来存储数据,这是一种单索引的结构化数据组织形式,查询的效率高
    协议简单:基于文本行的协议,直接通过telnet在Memcache服务器上进程存取数据操作,简单
    基于libevent高性能通信
    内置的内存管理方式:使用stab Allcation进行内存管理,按照既定的内存,将内存切割成特定的长度来存储相应的数据
    分布式:使用hash一致性算法,进行分布式存储数据,各个Memcache服务器之间互不通讯,各自独立存取数据,不共享任何信息,服务器并不具有分布式功能,分布式部署取决于memcache客户端
    缓存策略:LRU到期失效策略,即在内存用完之后,服务器端会根据LRU策略,计算最近没有使用过的数据,将其进行替换

    3. Reids与Memcache的比较

    • 数据结构:Memcache仅能支持简单的K-V形式,Redis支持的数据更多
    • 多线程:Memcache支持多线程,Redis支持单线程,CPU利用Memcache利用率更高
    • 持久化:Redis支持持久化,Memcache不支持持久化
    • 分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构
    • 虚拟内存:Redis当物理内存使用完时,会将一些很久没有用的内存交换到磁盘,而Memcache采取的LUR策略,将一部分数据刷新

    两者进行对比,是因为都是内存数据管理系统,而实际上两者之间区别还是很大,Redis更多的象一个键值对数据,包括数据的持久化,主从架构,数据备份等策略都是为了保证数据安全以及高可用,而Memcache更多的是一个数据缓存系统是为了提升数据的读取效率,所以两者的应用也有所不同,Memcache适合于适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等工作场合,Redis除去做Nosql数据库使用外,还能用做消息队列,数据堆栈和数据缓存等。

  • 相关阅读:
    c++ 与 c 的区别
    c++ 查看程序运行时间
    串口阻塞与非阻塞
    串口缓冲区
    马拉车算法
    printf 自加自减
    stack
    长度问题
    PCIE的内存地址空间、I/O地址空间和配置地址空间
    数组和指针
  • 原文地址:https://www.cnblogs.com/coder-wf/p/13384664.html
Copyright © 2020-2023  润新知