• Redis系列1——概述


    1. 简介

      Redis,key-value内存存储的数据库,全称“”Remote Dictionary Service(Sever)“”,默认端口号:6379

      Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

      Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

    2. 特点

    • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    • 原子性 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    • 持久化-Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
    • 数据备份-Redis支持数据的备份,即master-slave模式的数据备份。
    • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
      Redis相比memcached有哪些优势?

      底层模型不同,它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。   value大小:redis最大可以达到1GB,而memcache只有1MB   虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘   过期策略–memcache在set时就指定,例如set key1
    0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10   分布式–设定memcache集群,利用magent做一主多从;  redis可以做一主多从。都可以一主一从   存储数据安全–memcache挂掉后,数据没了;  redis可以定期保存到磁盘(持久化)   灾难恢复–memcache挂掉后,数据不可恢复;   redis数据丢失后可以通过aof恢复

    3. 应用

      (1)会话缓存(Session Cache)

      最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,比如:用户的购物车信息全部丢失。

      (2)全页缓存(FPC)

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

      (3)队列

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

      (4)排行榜/计数器

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

      举个栗子:我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:ZRANGE user_scores 0 10 WITHSCORES

      (5)发布/订阅

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

      (6)分布式锁

    补充:
    
    1. 记录帖子的点赞数,评论数和点击数【hash】
    2. 记录用户的帖子的标题、摘要、作者和封面信息,用于列表页显示。【hash】
    3. 缓存近期热帖内容(帖子内容的空间占用比较大),减少数据库压力【hash】
    
    4.记录帖子的相关文章ID,根据内容推荐相关帖子【list】
    
    5. 收藏集和帖子之间的关系【zset】
    6. 记录用户的帖子ID列表(排序),便于快速显示用户的帖子列表【zset】
    7. 记录帖子的点赞用户ID列表,评论ID列表,用于显示和去重计数【zset】
    8. 记录热榜帖子ID列表、总热榜和分类热榜。【zset】
    9. 缓存用户行为历史,过滤恶意行为【zset hash】 10. 如果帖子ID是整数自增的,可以使用Redis来分配帖子ID(计数器);
  • 相关阅读:
    ActiveReport9 在MVC4项目中出错
    EntityFramework5.0 DataBase-First 在三层架构中的使用,分离实体类到Model层。
    SqlServer存在并删除 表,函数,view等
    Visual Studio常用技巧与插件
    让 WPF 应用程序单例化
    C# 常用加密方法一 AES 与 DES
    Windows 的公共文件夹
    Hibernate中Criteria的完整用法
    maven依赖关系中Scope的作用
    Eclipse取消设置项目默认空间
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11535657.html
Copyright © 2020-2023  润新知