iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >最全Redis基础知识
  • 723
分享到

最全Redis基础知识

最全Redis基础知识 2018-03-14 09:03:23 723人浏览 才女
摘要

NoSQL概述 什么是Nosql NoSQL不仅仅是SQL,它是Not Only SQL 的缩写,也是众多非关系型数据库的统称NoSQL和关系型数据库一样,也是用来存储数据的仓库。 为什么需要NoSQL? 随着互联网的高速发展,数

最全Redis基础知识

NoSQL概述

什么是Nosql

NoSQL不仅仅是SQL,它是Not Only SQL 的缩写,也是众多非关系型数据库的统称NoSQL和关系型数据库一样,也是用来存储数据的仓库。

为什么需要NoSQL?

随着互联网的高速发展,数据量、访问量呈爆发式式增长。比如12306中国铁路票务系统。
一年售出车票有30多亿张;
网上售票比例超过了80%;
互联网高峰日售出车票达到了1282多万张;
高峰时每秒售票超出1000张;
网站高峰日访问量超过了1600亿次……
12306售票系统
已成为全球最大的票务交易系统
中国人民彻夜排队买票已成为历史

这么多的数据都是需要存储的,然而传统的关系型数据库面对这些海量数据的存储,以及实现高访问量、高并发读/写,就会显的力不从心,尤其是当面对超大规模、高并发、高吞吐量的大型动态网站的时候,就会暴露出很多难以克服的问题,影响用户体验。为了满足对海量数据的高速存储需求,实现高并发、高吞吐量,NoSQL应运而生。NoSQL的出现可以解决传统关系型数据库所不能解决的问题。

NoSQL特点

  1. 容易扩展,方便使用,数据之间没有关系。
  2. 数据模型非常灵活,无需提前为要存储的数据建立字段类型,随时可以存储自定义的数据格式。
  3. 适合大数据量、高性能的存储。
  4. 具有高并发读/写、高可用性。

Redis概述

Redis由来

2008年,意大利的一家创业公司Merzia推出了一款基于Mysql的网站实时统计系统LLOOGG,没多久该公司的创始人Sanfilippo对mysql的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。

什么是Redis

Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的、使用C语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的api
Redis能读的速度是110000次/s,写的速度是81000次/s 。

Redis为什么快

  1. 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。
  2. 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
  3. 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
  4. 使用多路I/O复用模型,非阻塞IO;

Redis的安装和使用

windows下安装

下载地址:https://GitHub.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip解压后,将文件夹重新命名为 redis。

打开文件夹,内容如下:

双击redis-server.exe,启动服务端,输入之后,会显示如下界面:

这时候启动一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:

redis-cli.exe -h 127.0.0.1 -p 6379

linux 下安装

下载地址:Http://redis.io/download,下载最新稳定版本。
教程使用的最新文档版本为 2.8.17,下载并安装:

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.

$ cd src
$ ./redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src
$ ./redis-server ../redis.conf

redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

ubuntu 下安装

在 Ubuntu 系统安装 Redis 可以使用以下命令:

$sudo apt-get update
$sudo apt-get install redis-server

启动 Redis

$ redis-server

查看 redis 是否启动?

$ redis-cli

以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上说明我们已经成功安装了redis。

Redis的数据结构

Redis 字符串(String)

概述

字符串类型是Redis中最为基础的数据存储类型。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

常用命令

  • 赋值
  • 取值
  • 删除

del key:删除指定的key

  • 数值增减

Redis 哈希(Hash)

概述

Hash类型可以看出具有String key 和String value 的map容器。所以该类型非常适合于存储值为对象的信息。如username、passWord和age等。每一个hash可以存储4294967295个键值对

常用命令

  • 赋值
  • 取值

  • 删除
  • 其他

    Redis 列表(List)

概述

List类型是按照插入顺序排序的双向链表。从元素插入和删除的效率视角来看,如果我们在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了大量的数据,该操作也可以在常量时间内完成。

常用命令

  • 两端添加
  • 查看列表
  • 两端弹出

  • 获取列表中元素的个数

Redis 集合(Set)

概述

Set类型为没有排序的字符集合。Set集合中不允许出现重复的元素。Set类型在功能上还存在一个非常重要的特性,即集合的聚合操作效率极高。

常用命令

  • 添加/删除元素

  • 获得集合中的元素
  • 集合的差集运算 A-B
  • 集合的交集运算 A∩B
  • 集合中的并集运算 A∪B

Redis 有序集合(sorted set)

概述

有序集合和Set类型即为相似,都不允许重复的成员出现在一个Set中。它们之间的主要差别是有序集合中的每一个成员都会有一个score与之关联,通过score来为集合中的成员进行从小到大的排序。

常用命令

  • 添加元素
  • 获得元素

  • 删除元素
  • 范围查询

Redis特性

多数据库

一个Redis实例最多可提供16个数据库,下标从0到15,客户端默认连接第0号。

消息订阅与发布

  1. subscribe channel:订阅频道。例如subscribe mychat,订阅mychat这个频道
  2. psubscribe channel:批量订阅频道。例如psubscribe s,订阅以s开头的频道。
  3. publish channel content:在指定的频道中发布消息,如punlish mychat ‘today is a newday’

Redis事务

Redis作为NoSQL数据库也提供了事务机制。
特点:

  1. 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其他客户端请求提供任何服务,从而保证了事务中的所有命令被原子的执行。
  2. 和关系型数据库中的事务相比,在Redis事务中如果有某一条命令执行失败,其后的命令仍然被继续执行。

Redis持久化

Redis的高性能是由于其将所有的数据都存储在了内存中,为了使Redis在重启之后仍能保证不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。
Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用,也可以结合使用。

  1. RDB持久化(默认)
    在指定的时间间隔内将内存中的数据集快照写入磁盘。
  2. AOF持久化
    日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

Key值过期

Redis的应用场景

  1. 缓存(最多使用)
  2. 聊天室的在线好友列表 发布/订阅
  3. 任务队列(秒杀、抢购) 消息队列、(先进先出、后进先出) (List)
  4. 应用排行榜(有序集合)
  5. 网站访问统计(Set)
  6. 数据过期处理(可以精确到毫秒)
  7. 分布式集群框架中的session分离。
您可能感兴趣的文档:

--结束END--

本文标题: 最全Redis基础知识

本文链接: https://www.lsjlt.com/news/4957.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis基础知识点有哪些
    本篇内容介绍了“Redis基础知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 什么是Red...
    99+
    2024-04-02
  • Linux基础知识点大全
    这篇文章主要讲解了“Linux基础知识点大全”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux基础知识点大全”吧!一、 从认识操作系统开始1.1 操作系统简介我通过以下四点介绍什么操作...
    99+
    2023-06-16
  • C# 最基础知识介绍--多态
    目录一、C# 多态性二、静态多态性三、函数重载四、C# 运算符重载1、运算符重载的实现 2、可重载和不可重载运算符五、动态多态性前言:👻🎄 学过编程...
    99+
    2024-04-02
  • python3基础知识
    字符串截取:利用下标进行截取py_str = 'python'len(py_str)py_str[:3] py_str + '123''python123'py_str * 3'pythonpythonpython' Str将数...
    99+
    2023-01-31
    基础知识
  • python基础知识
    1.注释   1.1.单行注释:以#开头,#右边的有所东西当做说明.   1.2.多行注释:'''   我是多行注释   '''   2.变量   2.1.为了充分的利用内存空间以及更有效率的管理内存,变量是有不同类型的     2.1....
    99+
    2023-01-30
    基础知识 python
  • Python 基础知识
    只是打印出 hello world 肯定是不够的,是吗?你会希望做得比这还要多——你想要输入一些内容,操纵它,然后从中得到一些输出出来的内容。我们可以在 Python 中通过使用变量与常量来实现这一目标,在本章中我们还会学习其它的一些概...
    99+
    2023-01-31
    基础知识 Python
  • 机器学习之基础知识(全)
    目录 1.机器学习概述 1.1 人工智能概述 1.1.1 人工智能使用场景 1.1.2 人工智能小案例 1.2 人工智能发展历程 1.2.1 图灵测试 1.2.2 发展历程 1.2.3 小结 1.3 人工智能主要分支 1.3.1 人工智能、...
    99+
    2023-08-31
    机器学习
  • 基础知识—3.12
    1、二叉树: 结点:所有的叶子。 叶子结点:最后一层的叶子数。 性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log2...
    99+
    2023-01-30
    基础知识
  • Java Swing最详细基础知识总结
    目录一、简介二、Swing 组件的层次结构三、Swing组件3.1 JFrame窗体组件3.2 JDialog窗体组件3.3 JLabel组件3.4 文本域3.5 按钮四.布局管理器...
    99+
    2024-04-02
  • C语言基础之二分查找知识最全汇总
    目录一、前言二、原始二分查找三、二分查找的变化之数组元素重复四、轮转循环五、杨氏矩阵六、用二叉树来描述二分查找七、二分查找的概率问题一、前言 在自学二分查找的过程中我想到了一些变化问...
    99+
    2024-04-02
  • Python基础知识大全(适用于全面复习Python语法知识)
    python语言的类型 python属于解释型语言 源代码(python)解释器(逐行解释每一句源代码)操作系统cpu java属于编译型语言 源代码(java)->编译器->可执行文件->操作系统c...
    99+
    2023-09-04
    python
  • Web安全入门基础知识(笔记)
    目录 0x01 基础名词 一、域名 1.什么是域名 2.域名在那里注册 3.什么是二级域名,多级域名,顶级域名 4.域名发现对于安全测试的意义 二、DNS 1.什么是DNS 2.本地host和DNS的关系 3.CDN是什么,和D...
    99+
    2023-09-16
    web安全 服务器 网络
  • mysql基础知识-3
    一、mysql修改用户密码方法:    方法一:mysqladmin -u username -h host -p password 'new_password';    方法二:mysql>set password for 'use...
    99+
    2023-01-31
    基础知识 mysql
  • Linux基础知识3
     Linux 命令的语法格式COMMAND options arguments 命令可分为:命令、应用程序、脚本文件三类命令按类型分为:内部命令:即集成在系统内核中的命令外部命令:独立的可执行程序,程序名即为命令名区分内部命令或外部命令可使...
    99+
    2023-01-31
    基础知识 Linux
  • RabbitMQ的基础知识
    目录RabbitMQ1.对MQ的介绍2.RabbitMQ的六种模式 及工作原理3.hello world队列4.工作队列模式5.消息应答机制自动应答手动应答消息自动进行重新入队6.R...
    99+
    2024-04-02
  • Kubernetes(K8S)基础知识
    目录Kubernetes 是什么Kubernetes 集群的组成Kubernetes 结构组件Master 节点kube-apiserveretcdkube-schedulerkub...
    99+
    2024-04-02
  • 【MySQL】基础知识(二)
    MySQL基础知识(二) 文章目录 MySQL基础知识(二)01 表操作1.1 创建表1.2 查看所有表1.3 查看指定表的结构1.4 删除表练习 02 CURD2.1 新增2.1.1 ...
    99+
    2023-09-06
    mysql adb android
  • 一、PyQt基础知识
    一、基础知识 (一)简介 1. 什么是PyQt5 PyQt是基于Digia公司强大的图形程序框架Qt的Python接口,由一组Python模块构成,它是一个创建GUI应用程序的工具包,由Phil Th...
    99+
    2023-09-11
    pyqt qt python
  • python之基础知识
    1、变量: 2、字符串:用   “  ” 或 ' ' 标注的。 3、列表:[  ] 4、del 和 pop 的区别: 判断何时使用:当从列表中删除元素后不再使用,则del,若后续还使用则pop() 例: #del name =["lele...
    99+
    2023-01-30
    基础知识 python
  • Python基础知识(一)
      #Python中开始那个Hello World挺简单的。  #!user/bin/env python3  #这一行是shebang,用以指示用哪个解释器来执行,如果有的话,必须在程序第一行  print("Hello World!")...
    99+
    2023-01-31
    基础知识 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作