系统学习redis之一——基础概念

前言:

redis集群搭建过很多次,也用过一些基础的命令,能解决一些常规的异常。但是因为平时对数据这块用得不多,一直没有很系统的学习过redis。这次将redis的知识好好学习了一下,记录为学习笔记《系统学习redis》系列。

NoSQL介绍

非关系型数据库:NoSQL
关系型数据库:MySQL、SQLserver、Oracle 关系型数据库在web2.0上对高并发,暴露出了一些性能问题

NoSQL 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如遵循SQL标准、ACID属性、表结构等。
这类NoSQL数据库的特点:

  • 非关系型的
  • 分布式的
  • 开源的
  • 水平可扩展的
    关于ACID属性:

    例如小明和小红各有100块钱,现在让小明给小红转账100 ,那么小明的账户就减去100元,还剩0元,小红的账户加上100元,有200元,这个过程就称作一个事务。但是如果当小明的账户上减去了100元,服务器就宕机了,这会儿小红的账户还没有加上这100元,这个事务就没有完成。这时候小明的100就不会减成功,整个事务就会退回到初始状态。也就是说,要整个事务的所有流程都完成,这个事务才会真正执行成功;只要事务的有一个步骤没有成功,整个事务就会退回到初始状态。这就是ACID属性。

Nosql特点

1、处理超大量的数据;
2、运行在便宜的PC服务器集群上
3、击碎了性能瓶颈,比如MySQL需要很多优化,Nosql就不需要,性能非常高

NoSQL适用场景

1、对数据高并发读写:MySQL到进行上万次的查询可能还OK,但是上万次写的话,对硬盘I/O的要求非常高,可能会效率低下。NOSQL就会很轻松
2、对海量数据的高效率存储和访问
3、对数据的高可扩展性和高可用性。比如MySQL有变动的时候,改表结构什么的很麻烦,nosql就不需要,没有固定表结构

redis介绍

redis基础概念

Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合和有序集合
Redis是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件

redis在新浪微博的使用方式
1、应用程序直接访问redis进行读写操作(redis一旦宕机,访问就崩掉了)
2、应用程序直接访问redis,当redis访问失败,就访问MySQL(MySQL和redis数据同步,如果redis宕机,也能访问到数据)

redis适用场合

1、适用于取最新的N个数据的操作;
2、适用于排行榜的应用:例如要取TOP1、TOP2等着这种TOPn的操作
3、适用于需要精确设定过期时间的应用,redis可以对数据设置精确的过期时间,这是MySQL做不到的
4、适用于计数器的应用
5、适用于Uniq操作,获取某段时间所有数据排重值
6、适用于实时系统,反垃圾系统
7、适用于Pub/sub构建实时消息系统(也就是发布与订阅。这是redis独有的系统)
8、适用于构建队列系统:list
9、用redis做缓存

redis和MySQL、mongodb的相同和不同点:
1、三者都有“库”的改建
2、MySQL有“表”的概念,redis没有,MongoDB里面是“集合”
3、MySQL有“字段”、“行和列”的概念,但是redis和MongoDB没有

redis MySQL MongoDB
“库”的概念
“表”的概念 collections
”字段/行和列“ 字段/行/列

Redis的常见配置:

daemonize 如果需要在后台运行,把该项改成yes
pidfile 配置多个pid的地址,默认是在/var/run/redis.pid
bind 绑定IP,设置后只接受来自该IP的请求
port 监听端口,默认是6379
timeout 设置客户端连接时的超时时间,单位为秒
loglevel 分为4级,debug、verbose、notice、warning
logfile 配饰log文件地址
database 设置数据库的个数,默认使用的数据库为0
save 设置redis进行数据库镜像的频率,备份数据
rdbcompression 在进行镜像备份时,是否进行压缩
Dbfilename 镜像备份文件的文件名
Dir 数据库镜像备份的文件放置路径
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requirepass 设置登录时需要使用的密码
Maxclients 限制同时连接的客户数量
Maxmemory 设置redis能够使用的最大内存
Appendonly 开启append only 模式
Appensfsync 设置对appendonly.aof文件同步的频率
vm-enabled 是否开启虚拟内存支持
vm-swap-file 设置虚拟内存的交换文件路径
vm-max-memory 设置redis使用的最大物理内存大小
vm-page-size 设置虚拟内存的页大小
vm-pages 设置交换文件的总的page数量
vm-max-threads 设置VMIO同时使用的线程数量
Glueoutputbuf 把小的输出缓存存放在一起
Activerehashing 重新hash
hash-max-zipmap-entries 设置hash的临界值

原文地址:http://blog.51cto.com/10950710/2161921

时间: 2024-10-17 05:29:19

系统学习redis之一——基础概念的相关文章

系统学习redis之七——redis数据类型之zset数据类型及操作

sourted sets数据类型介绍 sorted set是set的一个升级版本,他在set的基础上增加了一个顺序属性.这一属性在修改元素的时候可以指定,每次指定后,zset会自动按照新的值调整顺序,是有序集合.可以理解为有两列的MySQL表,一列存value,一列存顺序.操作中key理解为zset的名字. zset数据类型方法 zadd:向指定集合zset中添加元素member,score用于排序,如果该元素已经存在,则更新其顺序 zrange:查看sourted sets里面的所有元素 zr

系统学习redis之八——redis常用命令

redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在linux终端使用,包括以下两种:1.键值相关命令2.服务器相关命令 redis命令介绍 一.键值相关命令 key:返回满足给定匹配条件的所有key.用表达式*代表取出所有的key exists:确认一个key是否存在,存在即返回1,不存在就返回0 del:删除一个key expire:设置一个key的过期时间 persist:移除给定的key的过期时间 randomkey:随机返回数据库里面的一个key rename:重

Elasticserach学习笔记-01基础概念

本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html ElasticSearch有几个核心概念,了解它们将有助于我们的整个学习过程. 近乎实时(NRT)Elasticsearch是一个近乎实时的搜索平台.这意味着从你为一个文档建立索引到该文档可被检索

Redis系统学习 一、基础知识

1.数据库 select 1  select 0 2.命令.关键字和值 redis不仅仅是一种简单的关键字-值型存储,从其核心概念来看,Redsi的5种数据结构中的每一个都至少有一个关键字和一个值.在转入其它关于Redis的有用信息之前,我们必须理解关键字和值的概念. 关键字Keys是用来标识数据块,例如users:leto 这个关键字里的冒号没有任何特殊含义,对于Redis而言,使用分隔符来组织关键字是很常见的方法 值 values 是关联与关键字的实际值,可以是任何东西. 3.查询 key就

spring学习--一、基础概念

http://www.iteye.com/topic/1123081 上面这个网站(iteye)是国内学习spring非常棒的网站之一. 一.IOC IOC,即控制反转,由IOC容器实现IOC功能,可以将类和雷之间的依赖.创建.拼接.管理.获取的工作用配置的方式来完成,而不必用户自己创建类的代码,目前该配置文件采用xml文件.说的简单点就是:之前自己手动不用框架写项目,大部分的类和大部分的耦合关系都是自己设计,自己来写代码,其中有很多固定的.繁琐的代码,而spring有个叫IOC容器的工具,它可

OpenFlow Switch学习笔记(一)——基础概念

OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open Flow Protocol等.下文主要是基于个人理解整理的一些学习笔记,理解不到位的地方还请大家多多指教. 一.基础概念图: 首先我们先看下Open Flow Switch的整体结构,以便有一个初步的感性认识,如下图所示: 从上面架构图中,我们可以看到Open Flow Switch主要是由以下几个部

Json学习一(基础概念知识学习)

1.Json简单介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们非常easy的进行阅读和编写. 同一时候也方便了机器进行解析和生成.它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集. JSON採用全然独立于程序语言的文本格式.可是也使用了类C语言的习惯(包括C, C++, C#, Java, JavaSc

学习Redis从这里开始

本文主要内容 Redis与其他软件的相同之处和不同之处 Redis的用法 使用Python示例代码与Redis进行简单的互动 使用Redis解决实际问题 Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型.Redis提供了5种不同类型的数 据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来 适应数据库.除此之外,通过复制.持久化(persistenc

最新2019学习路线,零基础怎么系统学习大数据?

大数据技术是指从各种各样类型的巨量数据中,快速获得有价值信息的技术.解决大数据问题的核心是大数据技术.零基础怎么系统学习大数据?首先我们先了解一下什么是大数据. 最新2019学习路线,零基础怎么系统学习大数据?"大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取.管理和处理.大数据工程师需要学习哪些知识?创一个小群,供大家学习交流聊天如果有对学大数据方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家