zoukankan      html  css  js  c++  java
  • Redis概述

    1 概述

    Redis 是开源、高性能的key-value数据库。

    Redis很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。

    Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

       

    2 优点

    • 异常快 - 每秒可执行大约110000次的设置(SET)操作,81000次的读取/获取(GET)操作
    • 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等;
    • 支持事务,且操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值;
    • 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等;
    • 单进程单线程 - Redis采用队列技术将并发访问变成串行访问,消除了传统数据库并行控制的开销;
    • 支持读写分离、主从复制

       

    3 相对于memcached的优势

    • redis支持丰富的数据类型,memcached所有的值均是简单的字符串
    • redis单个value的最大限制是1GB, memcached只能保存1MB的数据
    • redis自己构建了虚拟内存机制,比系统的虚拟内存块
    • redis可以持久化其数据

       

    4 Redis支持的数据类型

    • Strings
    • Lists
    • Sets
    • Sorted Set
    • Hashes

       

    5 虚拟内存

    当value很大时,可以使用虚拟内存,节约内存。

    当key也很大时,可以将key-value变成一个value,存在虚拟内存中。

       

    6 数据分片

    数据分片模型把每个节点当成独立的master,对业务进行分片存储。包括范围分区和哈希分区。

    优点:容量大;处理能力强。

    缺点:不支持涉及多个key的操作或事务;数据处理复杂。

       

    7 管道技术

    Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:

    客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。

    服务端处理命令,并将结果返回给客户端。

    使用Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

    优势是提高了 redis 服务的性能。

       

    8 回收策略

    • volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
    • volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
    • volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
    • allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
    • allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
    • no-enviction:禁止驱逐数据

       

    9 发布订阅

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

    Redis 客户端可以订阅任意数量的频道。

    下图展示了频道 channel1,以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

    当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

       

    10 适用场景

    10.1 会话缓存(Session Cache)

    用Redis缓存会话相比其他存储的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的

    10.2 全页缓存(FPC)

    除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,能帮助你以最快速度加载你曾浏览过的页面。

    10.3 队列

    Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。

    10.4 排行榜/计数器

    Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。

    10.5 发布/订阅

    发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统。

       

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/xiongxx/p/6732670.html
Copyright © 2011-2022 走看看