当前位置: 首页 > news >正文

Redis实战和核心原理详解(2)Redis简介以及和其他缓存数据库的区别

相关文章:

Redis实战和核心原理详解(1)Centos7.0下安装Redis 5.0详细过程和使用常见问题

一、Redis简介

Redis 是一个开源的内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

它支持多种类型的数据结构,如字符串(Strings),散列(Hashes),列表(Lists),集合(Sets),有序集合(Sorted Sets或者是ZSet) 与范围查询, Bitmaps,Hyperloglogs 和 地理空间(Geospatial)索引半径查询。 其中常见的数据结构类型有String、List、Set、Hash、ZSet这5种

Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的磁盘持久化(Persistence), 并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High Availability)。

Redis也提供了持久化的选项,这些选项可以让用户将自己的数据保存到磁盘上面进行存储。根据实际情况, 可以每隔一定时间将数据集导出到磁盘(快照),或者追加到命令日志中(AOF只追加文件),他会在执行写命令时,将被执行的写命令复制到硬盘里面。您也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用。

Redis不使用表,他的数据库不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。

数据库的工作模式按存储方式可分为:硬盘数据库和内存数据库。Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。

(1)硬盘数据库的工作模式:

这里写图片描述

(2)内存数据库的工作模式:

这里写图片描述

资源列表:

官网地址:https://redis.io/

中文官方地址:http://www.redis.cn/

二、Redis 优势和优点

(1)性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

(2)丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

(3)原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

(4)丰富的特性 – Redis还支持 publish/subscribe(发布/订阅), 通知, key 过期等等特性。

三、Redis 与其他 key - value 缓存产品有以下三个特点:

(1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

(2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

(3)Redis支持数据的备份,即master-slave模式的数据备份。

四、Redis和Memcached的区别

Redis常被拿来和高性能键值缓存服务器Memcached进行对比:这两者都可以用来存储键值对,彼此的性能也相差无几,但是Redis相对支持更多的数据类型,除了支持键值对之外,还支持list,set,zset,hash等数据结构的存储,而Memcached只能存储普通的字符串键。

Memcached用户只能通过APPEND的方式将数据添加到已有的字符串的末尾,并将这个字符串当做列表来使用。但是在删除这些元素的时候,Memcached采用的是通过黑名单的方式来隐藏列表里的元素,从而避免了对元素的读取、更新、删除等操作。相反的Redis的List和Set允许用户直接添加和删除元素。

Redis和Memcached的其他区别如下:

1、Redis和Memcached都是将数据存放在内存中,都是内存数据库。不过Memcached还可用于缓存其他东西,例如图片、视频等等;

2、Redis不仅仅支持简单的K/V类型的数据,同时还提供List,Set,Hash等数据结构的存储;

3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的Value 交换到磁盘;

4、过期策略–Memcached在set时就指定,例如:set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如:expire name 10

5、分布式–设定Memcached集群,利用magent做一主多从;Redis可以做一主多从。都可以一主一从;

6、存储数据安全–Memcached挂掉后,数据没了;Redis可以定期保存到磁盘(持久化);

7、灾难恢复–Memcached挂掉后,数据不可恢复; Redis数据丢失后可以通过AOF恢复;

8、Redis支持数据的备份,即Master-Slave模式的数据备份;

9、应用场景不一样:Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和Session等。

五、Redis和其他数据库的区别

这里写图片描述


参考文章:

1、http://www.cnblogs.com/timothy-lai/p/5786502.html

2、http://www.runoob.com/redis/redis-intro.html

3、Redis in Action - [美] Josiah L.Carlsono

4、http://www.tuicool.com/articles/Rz2uIzb

相关文章:

  • 【vijos1642】班长的任务
  • Redis实战和核心原理详解(3)Redis常见的5种不同的数据类型详解
  • 类与类之间的几种关系
  • Redis实战和核心原理详解(8)使用快照RDB和AOF将Redis数据持久化到硬盘中
  • 复利(结对2.0)
  • 为什么要重写hashCode()方法和equals()方法以及如何进行重写
  • 程序员下一门要学的编程语言Swift
  • Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置
  • MATLAB地图工具箱学习总结(一)从地图投影说起
  • MySQL存储引擎MyISAM与InnoDB区别总结整理
  • Atitit。数据库 安全性 重要敏感数据加密存储解决方案
  • MySQL半同步复制原理配置与介绍
  • GIT 远程仓库:添加远程库、从远程库克隆
  • 用优雅的方式重装Windows 10不可使用的应用程序
  • 使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成
  • 自己简单写的 事件订阅机制
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • docker容器内的网络抓包
  • EventListener原理
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript异步流程控制的前世今生
  • k8s 面向应用开发者的基础命令
  • leetcode讲解--894. All Possible Full Binary Trees
  • Octave 入门
  • opencv python Meanshift 和 Camshift
  • tab.js分享及浏览器兼容性问题汇总
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 设计模式 开闭原则
  • 时间复杂度与空间复杂度分析
  • 思维导图—你不知道的JavaScript中卷
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • Linux权限管理(week1_day5)--技术流ken
  • #android不同版本废弃api,新api。
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (HAL库版)freeRTOS移植STMF103
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • **PHP分步表单提交思路(分页表单提交)
  • ./configure、make、make install 命令
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Reactor简单使用教程
  • .net refrector
  • .net 调用php,php 调用.net com组件 --
  • .net中应用SQL缓存(实例使用)
  • @JoinTable会自动删除关联表的数据
  • @JSONField或@JsonProperty注解使用
  • @NestedConfigurationProperty 注解用法
  • @private @protected @public
  • @test注解_Spring 自定义注解你了解过吗?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题